
一段典范的 AutoLayout 代码如下所示:
- _topViewTopPositionConstraint = [NSLayoutConstraint
- constraintWithItem:_topInfoView
- attribute:NSLayoutAttributeTop
- relatedBy:NSLayoutRelationEqual
- toItem:self.view
- attribute:NSLayoutAttributeTop
- multiplier:1.0
- constant:self.navigationController.navigationBar.frame.size.height + self.navigationController.navigationBar.frame.origin.y];
- [self.view addConstraint:topViewLeftPositionConstraint];
- (这里省略上述类似构造*4)
膳绫擎省略了很多代码,实际上一页都放不下。它干了什么呢,只是将一个元素紧贴屏幕上边沿放置。项目中我们会应用三方 AutoLayout 的封装:PureLayout ,简化代码,也有其它实用功能。
AutoLayout 比较合适:
- 根本的对齐(高低阁下对齐,居中对齐等)
- 固定的构造,固定的间距,动态性不高的页面
- 简单且数量较少的 UI 元素
别的有一点,AutoLayout 对机能是有损耗的,所以对机能有请求的场景,比如列表中的 cell,我们会用代码计算 frame,进步滑动帧率。
所以在实际工程中,须要来选择构造方法。
下面是 App 中首页消息 Feeds 的构造代码片段:
- - (void)layoutSubviews {
- [super layoutSubviews];
- CGFloat cellWidth = CGRectGetWidth(self.bounds);
- CGFloat currentY = 0.f;
- // 0.content
- CGFloat cellHeight = CGRectGetHeight(self.bounds);
- CGFloat contentHeigth = cellHeight - kCellPaddingHeight;
- _mainContentView.frame = CGRectMake(0, 0, cellWidth, contentHeigth);
- // 1. topic
- CGFloat topicLabelWidth = [_topicLabel.text boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:_topicLabel.font} context:nil].size
推荐阅读
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 对于电商而言,平日网站流量是靠推广得来的,常见的可以经由过程优化关键词,做外部链接,发文┞仿宣传,>>>详细阅读
本文标题:iOS屏幕适配实践浅谈
地址:http://www.17bianji.com/lsqh/38739.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示