.width; CGFloat topicLabelHeight = [@"测高度" boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:_topicLabel.font} context:nil].size.height; CGFloat topicLogoLeftPadding = 3.f; CGFloat topicLogoWidth = 10.f; CGFloat topicLeftPadding = 13.f; _topicView.frame = CGRectMake(topicLeftPadding, currentY + kTopicUpPadding, topicLogoWidth + topicLogoLeftPadding + topicLabelWidth, topicLabelHeight); _topicLogo.frame = CGRectMake(topicLabelWidth + topicLogoLeftPadding, CGRectGetHeight(_topicView.frame) / 2.0 - topicLogoWidth / 2.0, topicLogoWidth, topicLogoWidth); _topicLabel.frame = CGRectMake(0, 0, topicLabelWidth, topicLabelHeight); (省略大年夜量代码……) // 10._sourceLabel CGSize sourceSize = [_sourceLabel.text boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:_sourceLabel.font} context:nil].size; _sourceLabel.frame = CGRectMake(kEdgeHorizontalPadding, currentY + kLeadingUpPading, sourceSize.width, sourceSize.height); } 可以看到,为了肯定每个元素的地位,我们须要进行大年夜量的计算,代码可读性也不好,繁琐难读。如不雅惹人动态性,比如不合屏幕字体大年夜小改变,元素大年夜小按比例扩大年夜等,则计算量又要上一个数量级。
动态构造:清楚自力
对于一些通用 UI 组件,要进行标准化,设计上有利于 App 风格同一,实现上也便利开辟进行封装。
UI 界面是动态的,在不合状况,不合尺寸或者手机的反正屏情况下,我们往往须要在多套构造筹划中切换,或者对构造进行微调。如不雅应用 xib 构造的话,可以应用 SizeClass + AutoLayout 的筹划;如不雅是代码实现的页面,则没有官方供给的对象,只能用逻辑去断定。
一般来说,我们写复杂的 UI 页面,须要遵守两个原则:
- UI 构造代码要清楚:这是最重要的,要一眼就知道在调剂那一块,怎么调剂,如不雅不克不及,恰当拆分,优化定名。
- 构造代码要和营业逻辑自力:在一些常用设计模式下,我们会将 UI 和数据模型解耦,在 UI 内部,同样要将交互,设备这些逻辑和构造解耦,自力出类似前端 css 如许的纯构造文件。
将构造代码提炼出来,在不合尺寸下调用不合的实现:
- if (IS_IPHONE_6){
- self.layout = [MyLayout iPhone6Layout];
- }else if (IS_IPHONE_6_PLUS){
- self.layout = [MyLayout iPhone6PlusLayout];
- }
-
- // 实现小屏幕构造
- + (MyLayout *)iPhone6Layout {...}
- // 实现大年夜屏幕构造
- + (MyLayout *)iPhone6PlusLayout {...}
在开辟中我们经常会碰到须要动态设置字体的情况:
- 不合屏幕尺寸,或者反正屏,须要展示不合的字体大年夜小。
- 为用户供给了文┞仿调节字体选项。
- App 的不合说话版本,须要显示的字体不一样。
然则在我们的实际项目中,是不推荐应用 xib 的。

较为简单的做法是用宏或者列举定义字体参数,针对不合尺寸的屏幕,我们拿到不合的值:
推荐阅读
电商如何在“双十一”实现流量销量双绝杀
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践
对于电商而言,平日网站流量是靠推广得来的,常见的可以经由过程优化关键词,做外部链接,发文┞仿宣传,>>>详细阅读
本文标题:iOS屏幕适配实践浅谈
地址:http://www.17bianji.com/lsqh/38739.html
1/2 1