StoryBoard布局约束注意点
来源:互联网 发布:同城国际旅行社 java 编辑:程序博客网 时间:2024/06/08 10:40
对于个人来说,相对于代码写界面,我更喜欢使用可是化布局,可以实时看到,可是终究还是代码执行,所以很多东西还需要在代码中去做。
1.不要在Controller的viewWillLoad、viewDidLoad、viewWillAppear、wiewDidAppear中去使用来自于可视化布局布局和尺寸(特别是frame或bound)
原因:在这几个方法中,可视化布局的约束并没有生效,包括再wiewDidAppear这里,同样是无效的,所以它的视图的尺寸为原布局尺寸(取决于选择的基本布局模型)
后果:欲新添加的基于可视化bounds的新视图的布局与想像的不一样。
例如:storyboard中基于iphone7添加的等宽子视图view1,约束为等宽,我在wiewdidLoad中又在view1中添加一个view2=UIView(frame:view1.bouns),想着view2等宽view1,如果在iphone7(或屏幕宽度为375)中是可以的,可是其他宽度的手机就会出错,因为view2的宽度始终为原view1的宽度375,不会变化,除非你给他添加约束。
正确的姿势:a.在这几个方法中使用,添加约束。 b.不要在这几个方法中使用它的frame,在控制器viewDidLayoutSubviews()方法中使用其frame,时候才是对应的更新过后的。(会引起无线循环)
一般的控制器调用方法顺序:
override func viewDidLoad() { super.viewDidLoad() //self.updateViewConstraints() //即使调用也不会立即更新,也得再viewWillAppear后更新 view1 = self.view.viewWithTag(20) } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) } //新添加约束请在这里更新,确保该view的translatesAutoresizingMaskIntoConstraints属性已设置为NO //有约束布局更改会自动调用 override func updateViewConstraints() { super.updateViewConstraints() } override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() }
理解参考【ios8自动布局相关】
2.在代码中添加约束
确保改View的translatesAutoresizingMaskIntoConstraints属性已设置为NO
a.在对应的View的重绘方法中去添加,并更新布局调用。【View的约束相关方法】
b.建议重写控制器updateViewConstraints()方法,在中添加
阅读全文
0 0
- StoryBoard布局约束注意点
- Storyboard/Xib使用UIScrollView进行自动布局注意点
- UIScrollerView约束注意点
- 在ios中开发使用自动布局约束小注意点。
- [Android UI]ConstraintLayout-约束性布局的使用和注意点
- div+css布局注意点
- div+css布局注意点
- storyboard快速布局、约束怎么快速添加、拉线约束的快捷键表
- 使用storyboard时需注意的几点
- Storyboard布局
- StoryBoard下约束ScrollView
- 响应式布局的注意点
- 前端html/css布局注意点
- 线性布局LinearLayout 的注意点
- 将Storyboard中的添加约束,转为代码,更深的了解UI中的界面布局
- 纯代码添加masonry约束注意点记录一
- 关于UIScrollView设置约束时需要注意的几点
- 30. UIScrollView内部子控件添加约束的注意点
- 用栈模拟汉诺塔问题
- SqlServer:使用普通账户登录win7系统时,无法访问.net软件,原因是sql server 数据库拒绝访问,提示user没有权限
- JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
- hdu 2256 Problem of Precision(矩阵乘法+共轭公式)
- Nodejs笔记(2)——模块
- StoryBoard布局约束注意点
- error LNK2038: 检测到“_MSC_VER”的不匹配项问题
- 面试算法:波浪型数组的快速排序法
- 【文献阅读】Perceptual Generative Adversarial Networks for Small Object Detection –CVPR-2017
- ZOJ 1516 Uncle Tom's Inherited Land (二分图最大匹配)
- Andrew Ng机器学习课程笔记--week3
- Android之广播
- NET Core 使用 EF Code First
- bzoj4358 permu(莫队+线段树||莫队+并查集+分块)