繁体   English   中英

子类UIImage imageNamed :?

[英]Subclass UIImage imageNamed:?

我正在旅途中支持iPhone5。我很清楚Interface Interface Builder中有iOS 6的自动布局功能。 但是,这很棒,有时候我想在iPhone 5上加载自己的图像。

因此,在我的iPhone游戏中,某些图像恰好是屏幕尺寸(320x480)或(640 x 960)。 因此,如果我使用的是iPhone 5,这些图像将无法覆盖整个屏幕。 因此,我将为这些全屏图像制作(640 x 1136)图像。

现在,我知道,如果仅将图像命名为:MyImage-568h@2x.png它将不会加载。 那么,我将如何对UIImage进行子类化,以便它将加载-568h @ 2x图像而不是默认图像?

谢谢!

  1. 懒惰的方式:

     UIImage * img = [UIScreen mainScreen].bounds.size.height > 500 ? [UIImage imageNamed:@"Default-568h.png"] : [UIImage imageNamed:@"Default.png"]; 

    我是在一个应用程序中完成此操作的,其中没有摄像头的设备的主屏幕为Default.png 它似乎不太 hacky,因为无论如何我们都需要更改Default.png以支持新设备。

  2. 不太懒惰的方式:取决于您需要填充的空间, 而不是屏幕尺寸。

  3. 您要求的解决方案还不够通用,无法保证有一个类,但是无论如何这里都是这样:

     @implementation MyImage +(UIImage)imageNamed:(NSString*)name { if ([UIScreen mainScreen].bounds.size.height > 500) { UIImage * img = [UIImage imageNamed:[name stringByAppendingString:@"-iPhone5"]; if (img) { return img; } } return [UIImage imageNamed:name]; } @end 

    确实不需要继承UIImage。 如果您真的很 hacky,则可以打补丁/转换/否则+[UIImage imageNamed:]指向自定义方法,但除调试之外,我真的不建议这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM