作家
登录

iOS屏幕适配实践浅谈

作者: 来源: 2017-11-13 09:23:21 阅读 我要评论

.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 页面,须要遵守两个原则:

    1. UI 构造代码要清楚:这是最重要的,要一眼就知道在调剂那一块,怎么调剂,如不雅不克不及,恰当拆分,优化定名。
    2. 构造代码要和营业逻辑自力:在一些常用设计模式下,我们会将 UI 和数据模型解耦,在 UI 内部,同样要将交互,设备这些逻辑和构造解耦,自力出类似前端 css 如许的纯构造文件。

    将构造代码提炼出来,在不合尺寸下调用不合的实现:

    1. if (IS_IPHONE_6){   
    2.     self.layout = [MyLayout iPhone6Layout]; 
    3. }else if (IS_IPHONE_6_PLUS){   
    4.     self.layout = [MyLayout iPhone6PlusLayout];  
    5.  
    6. // 实现小屏幕构造 
    7. + (MyLayout *)iPhone6Layout {...} 
    8. // 实现大年夜屏幕构造 
    9. + (MyLayout *)iPhone6PlusLayout {...} 

    在开辟中我们经常会碰到须要动态设置字体的情况:

    • 不合屏幕尺寸,或者反正屏,须要展示不合的字体大年夜小。
    • 为用户供给了文┞仿调节字体选项。
    • App 的不合说话版本,须要显示的字体不一样。

    然则在我们的实际项目中,是不推荐应用 xib 的。

    iOS屏幕适配实践浅谈

    较为简单的做法是用宏或者列举定义字体参数,针对不合尺寸的屏幕,我们拿到不合的值:


      推荐阅读

      电商如何在“双十一”实现流量销量双绝杀

    Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 对于电商而言,平日网站流量是靠推广得来的,常见的可以经由过程优化关键词,做外部链接,发文┞仿宣传,>>>详细阅读


    本文标题:iOS屏幕适配实践浅谈

    地址:http://www.17bianji.com/lsqh/38739.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)