iOS背景图片适用于iPhone 6

3
我试图将一张UIImage设置为UIView的背景,但使用colorWithPatternImage方法时,iPhone 6会重复显示背景图片(据我所知,它使用@2x分辨率)。对于iPhone 6 plus,我没有问题,因为它使用@3x图像,但是iPhone 4、4s、5、5s和6使用相同的2@x图像,并且拥有不同的屏幕尺寸。我正在使用Xcode 6。

选择Xcassets中的imageblock,将其从universal更改为设备专用类型,然后您将分别为每个设备获得选项,希望这有所帮助! - ZAZ
它只显示以下选项:1x:iPhone无视网膜屏幕,2x:iPhone视网膜屏幕,Retina 4 2x:iPhone 4英寸视网膜屏幕,3x:iPhone 6 Plus。没有iPhone 6的选项。 - Marc
1个回答

4

我遇到了同样的问题,并通过这篇文章解决了它。

基本上你可以使用:

  • 一套单一的图片集用于1x,2x和R4。这覆盖了iPhone 4、4S和5/5S/5C - 以及从iPhone 4布局缩放应用程序的iPad
  • 一个“xxxxx-oversize”图像集适用于iPhone 6
  • 一个“xxxxx-overize@3x”集适用于iPhone 6 Plus

enter image description here

之后使用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

好的解决方案。谢谢。 - javsmo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接