objective-c - 以 Retina 质量屏蔽 2 个 UIImages

标签 objective-c ios uiimage retina-display mask

尝试发布答案后 here返回的图像在视网膜显示器上的质量很差。我的 mask 图像有白色背景和黑色内容。

输出:https://dzwonsemrish7.cloudfront.net/items/22373o2Z260d3S051a05/Screenshot%202013.01.02%2000.04.57.png?v=34c4ab14

代码:

CGRect rect = CGRectMake(0.0f, 0.0f, 61.0f, 53.0f);
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 2);
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor);
CGContextFillRect(context, rect);

UIImage *imageGradient = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIImage *toggleImage = [UIImage imageNamed:@"RotationToggle.png"];
UIImage *inputImage = imageGradient;
CGImageRef maskRef = toggleImage.CGImage;

CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                    CGImageGetHeight(maskRef),
                                    CGImageGetBitsPerComponent(maskRef),
                                    CGImageGetBitsPerPixel(maskRef),
                                    CGImageGetBytesPerRow(maskRef),
                                    CGImageGetDataProvider(maskRef), NULL, false);

CGImageRef masked = CGImageCreateWithMask(imageGradient.CGImage, mask);
CGImageRelease(mask);

UIImage *maskedImage = [UIImage imageWithCGImage:masked scale:inputImage.scale orientation:0];
CGImageRelease(masked);

最佳答案

我不完全确定,但尝试更改此行:

UIImage *toggleImage = [UIImage imageNamed:@"RotationToggle.png"];

为此:

UIImage *toggleImage = [UIImage imageNamed:@"RotationToggle"];

或者天真的这样:

UIImage *toggleImage = [UIImage imageNamed:@"RotationToggle@2x.png"];

问题是:我认为您通过以这种方式分配它来强制它使用低质量图像。跳过扩展时,Xcode 会自动查找 Retina 图像并在存在时分配它。

虽然我可能是错的,如果是这样的话抱歉。

关于objective-c - 以 Retina 质量屏蔽 2 个 UIImages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14115459/

相关文章:

objective-c - 使用 ARC 声明委托(delegate)属性的推荐方法

ios - Xcode 中的 "Waiting to attach to [app name] on [device name]"消息

iphone - 在 iPhone 中将两张图像合并为一张图像

ios - 是否可以在 UISegmentedControl 之外添加 UIBarButtonItem?

objective-c - 调整 NSPanel 的大小以适应动态 NSMatrix 和按钮

objective-c - 在Objective-C中找到另一个不区分大小写的字符串

ios - Safari 检测视频何时播放完毕

iphone - ios获取相机输入

ios - 从 UIImage 获取 CurrentBackgroundImage 路径

iphone - 如何从 UILabel 创建图像?