iOS 开发中关于Frame和约束的简单认识
来源:互联网 发布:尼康处理raw软件 编辑:程序博客网 时间:2024/06/06 15:00
1.约束创建的控件在-ViewDidAppear:可获得真是Frame,或者在手动调用-layoutIfNeeded方法后获得真是Frame
最初做开发的时候,经常使用的是用Frame做屏幕适配,包括后来的大屏幕等等是通过frame的比例来进行的适配,使用起来也算方便,后来苹果出了AutoLayout技术,以及随后的Masonry。
最初使用Masonry的时候,发现使用Masonry约束完的控件并没有Frame值(没调用layoutIfNeeded)方法,当时简单的了解一下自动布局的原理,简单说就是相对位置。而使用Frame布局是直接就是有布局的位置值的。
注:当使用约束创建的控件时,在视图加载完成时(-viewDidAppear:)能正确获得控件的Frame;或者在约束完毕时调用-layoutIfNeeded方法也能立马获得控件的Frame
文/Ticsmatic(简书作者)
原文链接:http://www.jianshu.com/p/59b28de88d7d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
2.StoryBoard加载控制器View的大小是屏幕的大小,Xib加载控制器View的大小是Xib的大小。
在StoryBoard里面加载的控制器的View的时候,在-viewDidLoad:方法里,打印View的Frame发现此时的Frame是屏幕的Bounds,是符合正常逻辑的,但是如果用控制器的View是xib初始化的,那么在-viewDidLoad:方法里面打印View的Frame发现此时的Frame是xib的大小,可以在-viewDidload:里先噶变View的大小,醉了。
文/Ticsmatic(简书作者)
原文链接:http://www.jianshu.com/p/59b28de88d7d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
3.用约束创建控件,不要用Frame的方式去更改。
用约束创建一个控件,但是此时如果在某个方法里面手动使用Frame的方式修改控件的位置,那么在手动旋转屏幕之后,控件的位置又会回到最初约束的状态,Frame方式失效。
总结:如果一个控件使用约束的方式布局,那么它的同级(父视图相同)布局最好也是用相同的布局方式,不要在这里同时混用Frame和约束(两者则其一使用)
转自:http://www.jianshu.com/p/59b28de88d7d
- iOS 开发中关于Frame和约束的简单认识
- IOS开发之读取使用AutoLayout约束的控件Frame
- 对于iOS中 frame 和bounds的一点自己的认识
- 关于C#中Lambda和'函数指针'的简单认识
- 关于iOS通知的简单认识
- iOS 中frame 和 bounds 的区别
- iOS中frame和bounds的区别
- iOS中frame和bounds的区别
- iOS中frame和bounds的区别
- IOS XIB中设置了约束后无法在代码中改变视图的frame
- 关于IOS中NSNumberFormatter的认识
- 关于NSTimer的认识和简单使用
- ios xib和代码的frame布局 iOSXib布局后代码修改约束的值
- 在IOS开发中三个基本属性frame、bounds和center的解惑
- iOS中AR开发的初步认识
- 关于 android Tween动画 和 frame动画的简单学习
- iOS-开发中frame与Bounds的区别
- iOS中Layer的认识和使用
- np.linalg.inv():
- How to change appname or app icon for different flavor version?
- RxJava interval 轮询
- 幸运数字
- Android系统开机启动流程及init进程浅析
- iOS 开发中关于Frame和约束的简单认识
- 使新建windows记事本的字符集编码默认为UTF-8
- 浅谈C/C++ 开发Excel插件之自定制ribbon菜单
- 服务端极光推送2-分组推送及服务端集成
- TCP/IP协议三次握手与四次握手流程解析
- OC中的数组遍历方法
- ShaderLab学习笔记<一>
- RasGetQuarantineConnectionId
- 记一次基于Unity的Profiler性能分析