【问题标题】:Dealing with different size images in a xib for iPhone5 versus iPhone4?在 iPhone 5 和 iPhone 4 的 xib 中处理不同尺寸的图像?
【发布时间】:2012-09-27 01:12:50
【问题描述】:

之前关于迁移到 iPhone 5 的帖子只提到了添加新大小的启动图像* 如果需要,可能会使用 AutoLayout。

但是我有一些 xib,其中有一个背景图像,它填满了整个屏幕(可能会忽略导航和标签栏,具体取决于视图)。为了支持 iPhone 5,我现在需要针对不同屏幕尺寸的不同图像,这在 xib 或其他地方是如何处理的?

(*顺便说一句,如果应用不使用启动图像,你会怎么做?)

【问题讨论】:

    标签: iphone ios uiimageview ios6 iphone-5


    【解决方案1】:

    Here's 一个真正可以帮助你的链接。保存启动图像,如果您在文件名末尾输入“-568h@2x.png”,iOS 不会自动选择正确的图像。 above link 中提到了一些帮助方法,它们将使您的工作变得轻松。

    我已经采用了上面提到的链接中的代码,这是 Obj-C 的辅助函数:

    -(BOOL) IsTall
    {
        return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) && ([[UIScreen mainScreen] bounds].size.height * [[UIScreen mainScreen] scale] >= 1136);
    }
    

    写一点类别也会有所帮助。

    @interface NSString (Special)
    -(NSString*)correctImageNameForiPhone5
    @end
    
    @implementation NSString (Special)
    -(NSString*)correctImageNameForiPhone5
    {
        if([self isTall])
                return -imageNameAppendedWith_-568h@2x.png_-; //Do the correct NSString magic here
        else
                return -originalImageName-;
    }
    @end
    

    最后,当你访问 UIImage 对象时:

    NSString *filename = @"backgroundImage.png";
    UIImage *img = [UIImage imageNamed:[filename correctImageNameForiPhone5]];
    

    这里的假设是您的所有 iPhone5 特定图像文件名都以“-568h@2x”结尾。如果你只是把它放到你的项目中,这个代码示例肯定是行不通的,但你明白了。它需要一些 NSString 修复。

    【讨论】:

    • 这是程序化的,所以不能再使用带背景的xib了?
    • 如果 iOS 无法处理基于命名约定的自动调整大小,我看不到任何其他选项。虽然我很想知道是否有出路!!
    • 还有另一种以编程方式处理较高图像的方法。 github.com/gaj/imageNamed568
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 2012-09-07
    相关资源
    最近更新 更多