如何在 iphone5 和 iphone6 上更改 UIImageView 的大小?

Posted

技术标签:

【中文标题】如何在 iphone5 和 iphone6 上更改 UIImageView 的大小?【英文标题】:How to change size of UIImageView on iphone5 & iphone6? 【发布时间】:2015-04-11 12:08:35 【问题描述】:

我有一张图片要显示在我的应用中。 我想将 iPhone6 上的图像大小设置为 169pt,而在 iPhone5 上将其设置为 120pt。 我知道 ios8 上有一个尺码等级。但是我怎样才能在它上面为不同的 iPhone 设置不同的尺寸。 我只能区分尺寸等级的 iPad 和 iPhone 纵向/横向,无法区分 iPhone 5 和 iPhone6

【问题讨论】:

【参考方案1】:

您考虑过使用 AutoLayout 吗?这是一个基于约束解析器的布局系统,可以让您的视图响应,并且它是 Apple 从 iOS7 开始的首选方法。文档在这里:

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/Introduction/Introduction.html

这里有一个很棒的教程:

http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1

AutoLayout 是一种更强大的方法,即使 Apple 添加了新的 UI 惯用语和尺寸(如 Apple Watch),也可以让您的视图保持响应。随着要支持的尺寸数量的增加,命令式尺寸调整代码将很快变得脆弱。

【讨论】:

【参考方案2】:

刚刚从我的一个项目中提取了这个。它显示了我用于计算用户正在使用什么设备的逻辑

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0)
#define IS_IPHONE_6 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 667.0)
#define IS_IPHONE_6PLUS (IS_IPHONE && [[UIScreen mainScreen] nativeScale] == 3.0f)
#define IS_IPHONE_6_PLUS (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 736.0)
#define IS_RETINA ([[UIScreen mainScreen] scale] == 2.0)

【讨论】:

以上是关于如何在 iphone5 和 iphone6 上更改 UIImageView 的大小?的主要内容,如果未能解决你的问题,请参考以下文章

布局不适用于 iPhone 6

在启用自动布局和大小类的情况下更改视图宽度

如何设置自动布局约束常量通用或设备特定?

如何水平居中对齐标签以快速适应所有屏幕尺寸

设置图像以适合 iPhone 5 和 iPhone 6

视图中按钮的对齐方式