使用代码创建AutoLayout约束
使用代碼創建AutoLayout約束
?
1.代碼創建約束的步驟
?
2.代碼創建約束的常用方法
?
3.代碼創建約束的原則
?
4.禁用Autoresizing的原因
?
5. 設置相對狀態欄的約束,使用self.topLayoutGuide?
?
6.通過AutoLayout實現動畫
拿到高度約束(self.viewHconstraint)--修改constant值(self.viewHconstraint += 100;)--在動畫中[view layoutIfNeeded]。
?
7.關于自動布局的相關知識總結:
7.1 ?Autoresizing和AutoLayout是互斥的,每次只能使用其中一個。Xib/Storyboard默認使用AutoLayout,禁用了Autoresizing。但是使用代碼給UI控件添加約束時,Autoresizing默認是打開的,需通過view.translatesAutoresizingMaskIntoConstraints = NO;關閉Autoresizing,才能在代碼中使用AutoLayout。
7.2 Autoresizing只能設置某控件和它父控件之間的約束關系,AutoLayout可設置父子控件/兄弟控件等所有的約束。以后的項目都只使用AutoLayout技術。
7.3 Autoresizing外面框框代表父控件,里面框框代表當前選中的控件。另外還有6根線,外面的4根線如果選中,表示子控件與父控件上下左右的間距無論在任何屏幕下都保持現在的值。里面的2根線如果被選中,說明子控件的尺寸(寬高)會隨著父控件尺寸變化而變化。
7.4 SizeClass是ios8以后出現的新技術,若兼容以前版本則不能用。SizeClass將屏幕分為9種類型,可設置在不同屏幕下是否install某UI控件、在不同屏幕下給同一控件設置不同的約束,給同一圖片框設置不同的圖片,給同一控件設置在不同的字體。
7.5 使用AutoLayout添加約束時,在xib中選中一條約束,點擊屬性查看器,發現有個priority(優先級,取值為1-1000,常用required1000,high750,lower50三種),表示在設置同一尺寸時,如果多條約束發生沖突,則以優先級高的為準。
?
8. UIButton,UISwitch,UITextField,UILabel,UIImageView等控件,在使用AutoLayout布局時只需設置x,y值,不設置寬高都可以,因為這些控件都有默認的寬和高。對于UIButton,它的寬高會根據里面的imageView和textLabel自動調整,如果給UIButton設定了很長的寬度,但是它里面的textLabel的寬度仍會根據文字來自動調整。
?9. ?iOS程序運行時屏幕的真實大小由啟動圖片決定(Launch.xib運行起來后會截圖保存為啟動圖),如果最大尺寸的啟動圖設置為4inch(320*568)的,那么就算在4.7inch(375*667)和5.5inch(414*736)的屏幕上運行時,依舊將屏幕劃分成320*568等分,這樣頂多會導致圖片變大或者模糊。
如果圖片大小本身并沒有按照 iPhone6 和 6p 來做(比6和6p 的尺寸要小),?解決方法是:把啟動圖片改成使用 LaunchImage的方式, 這樣的話在6和6p 下實際尺寸也是4inch 的尺寸,所以可以實現“假適配”。
?
轉載于:https://www.cnblogs.com/stevenwuzheng/p/5486730.html
總結
以上是生活随笔為你收集整理的使用代码创建AutoLayout约束的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS中NSLog输出格式大全
- 下一篇: Solr Zookeeper ACL权限