@fiy-fish
2017-03-31T11:19:42.000000Z
字数 1054
阅读 1217
2017-03-30 1.swift guard关键字 2.约束
工作日志
- scrollView的scrollIndicatorInsets属性: 指定滚动条在scrollerView中的位置
- 使用 guard 的正确姿势
- 可以用 guard:在验证入口条件时
- 可以用 guard:在成功路径上提前退出
- 可以用 guard:在可选值解包时(拍扁 if let..else 金字塔)
- 可以用 guard:return 和 throw 中
- 可以用 guard:日志、崩溃和断言中
- 不要用 guard:替代琐碎的 if..else 语句
- 不要用 guard:作为 if 的相反情况
- 不要:在 guard 的 else 语句中放入复杂代码
关于 guard
了解下就可以了,不要太深入
- stackView 的
addArrangedSubview
和 addSubviews
,removeArrangedSubview
和 removeSuviews
addArrangedSubview
: 加入视图管理,自动调用addSubviews
removeSuviews
会自动调用 removeArrangedSubview
removeArrangedSubview
不会自动调用removeSuviews
- stackView 中的view的hiden属性具有动画效果(view默认hiden属性是不具备动画效果的)
- 约束中:Standard 属性
- 和父视图的约束中 Standard = 20;
- 和相邻视图的约束中 Standard = 8;
横竖屏 采用不同的布局方式
- 在XIB 和 storyBoard 中选择w h 模式,不同的模式选择不同 的约束,可以设置某种具体模式下的约束。请看官方文档最后一个示例
防止约束冲突
- 考虑所有有可能出现约束冲突的情况,并且针对这些威胁添加不同优先级的辅助约束
- 避免使用“让控件有固定大小”的思维去设置content-hugging or compression-resistance的优先级
- 有歧义的约束
- 约束调试
- hasAmbiguousLayout 是否有约束歧义
- exerciseAmbiguityInLayout 这将会在有效值之间随机改变视图的frame
- constraintsAffectingLayoutForAxis: 横向或者竖向坐标的所有约束
- _autolayoutTrace:私有方法,标注出所有有歧义的视图和属性translatesAutoresizingMaskIntoConstraints 为YES的视图
- 约束创建的视图,不能做动画和变形
- 约束的优先级可以在不同的视图容器中进行比较