所以,我正在创建一个具有很多图像的应用程序,而这些图像是我用于UI的,但我遇到了@ 1x的问题,现在,我试图设置帧,这是2x和3x概念。
首先,我写了一个全局函数库,其中包含一个名为getDevice
的函数,因此我可以确定用户使用哪种设备为每个元素设置适当的帧:
//Device
+ (int)getDevice
{
CGSize bounds = [[UIScreen mainScreen] bounds].size;
if((bounds.width == 320 && bounds.height == 480) || (bounds.width == 480 && bounds.height == 320))
return gDevice_iPhone4S;
else if((bounds.width == 320 && bounds.height == 568) || (bounds.width == 568 && bounds.height == 320))
return gDevice_iPhone5;
else if((bounds.width == 375 && bounds.height == 667) || (bounds.width == 667 && bounds.height == 375))
return gDevice_iPhone6;
else if((bounds.width == 414 && bounds.height == 736) || (bounds.width == 736 && bounds.height == 414))
return gDevice_iPhone6Plus;
else if((bounds.width == 768 && bounds.height == 1024) || (bounds.width == 1024 && bounds.height == 768))
return gDevice_iPad;
return gDevice_Unknown;
}
这一切都运行良好,但我的问题围绕着框架尺寸,因为我能够识别正确的设备。所以,例如,让我说我有三个按钮,我想跨越屏幕的底部。在iPhone 4S上,它会是这样的:
现在这是使用3张图片:
但是当我想在iPhone 6上使用这些图像时会发生什么?
现在这个应该使用相同的图像,因为iPhone 6仍然使用@ 2x?
但是(220x80)
需要成为(258x94)
才能拉伸图片。那么当我需要@ 1x,@ 2x,@ iPhone62x和@ iPhone6Plus3x时,拥有@ 1x,@ 2x和@ 3x iPhone图像的重点是什么?
答案 0 :(得分:1)
是的,乍一看有点令人困惑。
对于iPhone 4 / 4s / 5 / 5s和iPhone 6来说,拥有@ 2x的点是这些屏幕的DPI相等(326 ppi)。
另一方面,您需要为这些iPhone设置不同的图像特定于您的应用程序设计,并且您有以下解决方案:
-resizableImageWithCapInsets:
创建的可伸缩图像,使图像在110pt和129pt上都看起来不错+getDevice
(或类似方法)来确定应加载的图片(-568h@2x
或-667h@2x
)。有关详情和方便的UIImage
类别,请参阅此答案https://stackoverflow.com/a/26684508/753878