我试图将一张UIImage设置为UIView的背景,但使用colorWithPatternImage方法时,iPhone 6会重复显示背景图片(据我所知,它使用@2x分辨率)。对于iPhone 6 plus,我没有问题,因为它使用@3x图像,但是iPhone 4、4s、5、5s和6使用相同的2@x图像,并且拥有不同的屏幕尺寸。我正在使用Xcode 6。
我遇到了同样的问题,并通过这篇文章解决了它。
基本上你可以使用:
之后使用UIImage上的自定义类别来根据显示大小从正确的资源中加载。
#import "UIImage+ImageAdditions.h"
@implementation UIImage (ImageAdditions)
+ (NSString *)resolveAdaptiveImageName:(NSString *)nameStem {
CGFloat height = [UIScreen mainScreen].bounds.size.height;
if (height > 568.0f) {
// Oversize @2x will be used for iPhone 6, @3x for iPhone 6+
// iPads... we'll work that out later
if (height > 667.0f) {
return [nameStem stringByAppendingString:@"-oversize@3x"];
} else {
return [nameStem stringByAppendingString:@"-oversize"];
}
};
return nameStem;
}
+ (UIImage *)adaptiveImageNamed:(NSString *)name {
return [self imageNamed:[self resolveAdaptiveImageName:name]];
}
@end