首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子类UIImage imageNamed:?

子类UIImage imageNamed:?
EN

Stack Overflow用户
提问于 2012-09-25 06:32:43
回答 1查看 1.3K关注 0票数 1

我的目标是支持iPhone 5,我很清楚在界面生成器中有iOS 6的自动布局功能。这是伟大的,但有时我想加载我自己的图像,如果它是iPhone 5。

因此,在我的iPhones游戏中,一些图像的大小正好是屏幕的大小(320x480)或(640x960)。因此,如果我使用的是iPhone 5,这些图像不会覆盖整个屏幕。因此,我将为这些全屏图像制作(640 X 1136)图像。

现在我知道,如果我简单地将图像命名为: MyImage-568h@2x.png,它将不会加载。那么,我该如何子类化UIImage才能加载非默认镜像的-568h@2x镜像呢?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-25 06:45:49

  1. The lazy way:

UIImage * img = UIScreen mainScreen.bounds.size.height > 500?默认imageNamed:@“UIImage -568h.png”:UIImage imageNamed:@"Default.png";

我在一个应用程序中做到了这一点,在没有摄像头的设备上,主屏幕是Default.png;它看起来并不太老套,因为我们无论如何都需要修改Default.png来支持新设备。

  • 以不那么懒惰的方式:条件你需要填充的空间,而不是屏幕尺寸。

  • 你要求的解决方案并不是真的通用到需要一个类,但不管怎样,它是:

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

确实没有必要对UIImage进行子类化。如果你觉得很麻烦,你可以打补丁/swizzle/或者+[UIImage imageNamed:]来指向一个定制的方法,但我真的不推荐这样做,除非是调试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12573853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档