私はこれに適切な解決策を見つけることができませんでした。私はすぐに回避策が必要でした。以下は、UIImageを指定すると暗いアルファ塗りつぶしで暗くなった新しい画像を返す関数です。コンテキストフィルコマンドは、異なるタイプのダークニングを提供するために、他の描画ルーチンまたは塗りつぶしルーチンに置き換えることができる。
これは最適化されておらず、グラフィックスAPIに関する知識は最小限に抑えられています。
この機能を使用して、少なくとも暗くなるようにUIControlStateHighlighted状態イメージを設定することができます。この問題を解決するには
+ (UIImage *)darkenedImageWithImage:(UIImage *)sourceImage
{
UIImage * darkenedImage = nil;
if (sourceImage)
{
// drawing prep
CGImageRef source = sourceImage.CGImage;
CGRect drawRect = CGRectMake(0.f,
0.f,
sourceImage.size.width,
sourceImage.size.height);
CGContextRef context = CGBitmapContextCreate(NULL,
drawRect.size.width,
drawRect.size.height,
CGImageGetBitsPerComponent(source),
CGImageGetBytesPerRow(source),
CGImageGetColorSpace(source),
CGImageGetBitmapInfo(source)
);
// draw given image and then darken fill it
CGContextDrawImage(context, drawRect, source);
CGContextSetBlendMode(context, kCGBlendModeOverlay);
CGContextSetRGBFillColor(context, 0.f, 0.f, 0.f, 0.5f);
CGContextFillRect(context, drawRect);
// get context result
CGImageRef darkened = CGBitmapContextCreateImage(context);
CGContextRelease(context);
// convert to UIImage and preserve original orientation
darkenedImage = [UIImage imageWithCGImage:darkened
scale:1.f
orientation:sourceImage.imageOrientation];
CGImageRelease(darkened);
}
return darkenedImage;
}
を、私は同様の問題がunbutton背景を設定した後はどこ持ってイメージをuiimagepickerから選択したピクチャに追加すると、イメージは90度回転したように見えます。 – marciokoko