iOS-界面布局自动适配

作者 : 开心源码 本文共1270个字,预计阅读时间需要4分钟 发布时间: 2022-05-12 共95人阅读

近期需要对旧的一个App的界面进行UI改造,要求效果图在不同分辨率(iPhone,iPad)下能保持相同的显示比例效果。大屏幕下的按钮,字体要相应的变大。

  • 不堪入目的旧界面origin.png

  • 改版后的新面孔new.png

一,原布局存在问题
  • 图片的固定尺寸导致在大屏中显示太小
  • 字号在不同分辨率中不能很好的转换
  • 布局采使用固定数值的尺寸导致大屏整体的显示效果错乱
二,起因

图片.png

上图为苹果设施的分辨率,对开发者而言,往往只需关注设施的逻辑分辨率(pt),很长一段时间编写界面都是以逻辑分辨率大小编写,例如以320宽来计算尺寸以及布局,常有如下硬编码:

UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 160, 160)];

在显示时系统会根据不同机型的缩放因子自动转换成对应的屏幕分辨率。以iPhone5为例,160的宽度转换后大概占屏幕的一半,但对于分辨率是1024的iPad,实际显示的宽度比例不到20%了。同理,xib构建的界面,假如束缚采使用的是固定值,也一样会出现相似问题

三,界面如何适配iPhone,iPad

想要在iPhone,iPad的中显示效果一致,达到同比放大的视觉效果,就是如何解决好字体,间距,控件大小的等比例缩放问题。核心思路就是避免写死的数值硬编码

1: 代码构建的界面用比例布局
    [editView mas_makeConstraints:^(MASConstraintMaker *make) {        make.center.equalTo(self.view);        make.width.equalTo(self.view.mas_width).multipliedBy(0.7);        make.height.equalTo(self.view.mas_width).multipliedBy(0.7*0.7);     }];
2: xib构建的界面束缚采使用百分比布局布局
  • view的宽度:设置相对于容器宽度的百分比图片.png

  • view固定宽高比:设定其 Aspect Ratio图片.png

  • view与父容器边距:View.Leading 与 Superview.Leading 间距占 Superview.Width 的百分比图片.png

3:字体等比自动适配

以UI给的尺寸图iPhone6/6s(375*667)为例,获取屏幕的最长边,通过比例换算最终的字体大小,定义宏

#define SCREEN_HEIGHT MAX([UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width)#define font(R) (R)*(SCREEN_HEIGHT)/667
// 假如是xib中的控件,则需在awakeFromNib中设置就可label.font = [UIFont systemFontOfSize: font(11)];

调整后效果如开头所示

参考

  • iOS AutoLayout 百分比布局
  • iOS所有设施的分辨率
  • 设计稿支持多个尺寸

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » iOS-界面布局自动适配

发表回复