亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS中的AutoLayout使用實踐總結

2020-07-26 02:35:51
字體:
來源:轉載
供稿:網友

前言

AutoLayout非常強大也非常易用,可讀性也很強,加上各種第三方AutoLayout庫,讓你布起局來猶如繃掉鏈子的狗!但在使用中也有各種各樣的問題,下面就來給大家詳細介紹下。

AutoLayout 問題

  • 布局沖突
  • 固有尺寸沖突
  • 布局和固有尺寸沖突

主要概念

  • 固有尺寸 intrinsicContentSize(意思就是說我知道自己的大小,如果你沒有為我指定大小,我就按照這個大小來。)
  • hugging,compress
  • priority
  • constraint:equal,unequal

一個UIView顯示,需要有2個元素,position & size。AutoLayout可以確定view 的這兩個,so 不用frame。

1、布局遇到的問題

布局絕對沖突:

eg 設置了 view 的左右,然后又有個 width,造成沖突

   解決方案:

    1.設置優先級(低優先級constraint沒有用到的時候的時候系統默認忽略)

    2.刪除沒有的constraint(常用)

2、布局模糊沖突

    假設UIView2的寬度不能超過50。當UIView1寬度小于50的時候,二者等寬;

    當UIView1寬度大于50的時候,UIView2不受UIView1寬度的影響。 

    于是給UIView2加上一條約束:寬度<=50。這時候沖突來了:

因為UIView1的寬度是定好的,而UIView2和UIView1等寬。那么UIView2的寬度就是確定的。

    so 當寬度 > 50 的時候,就是沖突,<= 50 的時候就不是沖突

    解決方案:

        equal width priority 設置低一些,這樣讓 View2 先滿足<= 50的 constraint,當他的width <= 50 的時候equal width生效

enum { UILayoutPriorityRequired = 1000, UILayoutPriorityDefaultHigh = 750, UILayoutPriorityDefaultLow = 250, UILayoutPriorityFittingSizeLevel = 50,};

1、intrinsic沖突

content Hugging/content Compression Resistance 設置優先級解決intrinsicContentSize

  • Hugging (不想填充空間)
  • Compression (不想被擠壓)
  • 有這兩個特性的 view 一定實現了 intrinsicContentSize
  • Hugging 默認 priority = 250
  • Compression 默認 priority = 750
  • 其他 constraint 默認 priority = 1000(最大)

當 constraint.priority > hugging.priority View會被拉伸

當 constraint.priority < hugging.priority View會被抱緊在priority小的那一邊

當 constraint.priority > compression.priority View 會被擠壓

當 constraint.priority < compression.priority View 不會被擠壓

    eg UILabel 有intrinsicContentSize 那么UILabel的size 就用它,

    如果有constraint 設置了 size 那么使用 constraint的

    UILabel1、和UILabel2布局 :

    距離上邊欄都是50點。 UILabel1與左邊欄距離為10,UILabel2左面距離UILabel1為10點。

    因為都具有Intrinsic屬性,所以不需要指定size,位置應該也明確了。

    再給UILabel2加一條約束,右側距離右邊欄為10點。(如果view 沒有intrinsicContentSize,那么右邊的view 會被拉伸)

    因為 UILabel 有intrinsicContentSize 所以2個Labe 必須有一個要被拉伸

    * 1個label 使用自己的intrinsic,另一個填充其他空間

使用場景

1、沒有 intrinsicContentSize 的view 使用 priority,將模糊沖突改變成條件布局

2、有 intrinsicContentSize 的view

       改變hugging or compression 的priority,解決intrinsic 沖突

       雖然有intrinsic 只要給出origin 和 size 就可以了,可是使用 unequal constraint 完善布局,避免警告

       主要接口 & 屬性

UILabel 的preferredMaxLayoutWidth,如果有多行要設置正確的preferredMaxLayoutWidth,來得到 正確的intrinsicContentSize

systemLayoutSizeFittingSize 調用 intrinsicContentSize

layoutIfNeed 如果有布局變化強制刷新

當視圖的內在內容改變時,需要調用 invalidateIntrinsicContentSize ,讓系統知道在下次布局時重新計算intrinsicContentSize

// 原有的視圖尺寸和現在的不相符,- (void)layoutSubviews { [super layoutSubviews]; _collectionView.frame = self.bounds; if (!CGSizeEqualToSize(self.bounds.size, [self intrinsicContentSize])) { [self invalidateIntrinsicContentSize]; }}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
奇门遁甲1982国语版免费观看高清| 亚洲视频一区二区| 高潮白浆女日韩av免费看| 日韩av色综合| 国产精品无码专区在线观看| 国产最新精品视频| 奇米4444一区二区三区| 欧美色videos| 欧美日韩性生活视频| 欧美最猛黑人xxxx黑人猛叫黄| 久久精品这里热有精品| 久久精品国产亚洲精品2020| 国产精欧美一区二区三区| 久久人91精品久久久久久不卡| 亚洲午夜未满十八勿入免费观看全集| 国产精品黄页免费高清在线观看| 影音先锋欧美精品| 久久精品国产一区二区电影| 中文字幕亚洲在线| 日韩在线欧美在线国产在线| 欧美性猛交xxxxx水多| 亚洲高清av在线| 992tv成人免费视频| 另类天堂视频在线观看| 57pao国产成人免费| 69av在线视频| 中文在线资源观看视频网站免费不卡| 日韩**中文字幕毛片| 韩国精品美女www爽爽爽视频| 欧美激情精品久久久久久黑人| 欧美一级免费看| 国产91精品久久久久| 日韩在线观看网站| 成人淫片在线看| 亚洲欧美日韩综合| 91老司机在线| 欧美电影《睫毛膏》| 日韩欧美在线一区| 日韩福利伦理影院免费| 亚洲精品xxx| 国产午夜精品一区理论片飘花| 色视频www在线播放国产成人| 亚洲自拍偷拍视频| 国产欧美日韩91| 成人av资源在线播放| 在线观看精品国产视频| 久久精品这里热有精品| 久久久久久欧美| 一区二区国产精品视频| 成人网址在线观看| 亚洲人成在线一二| 久久精品国产欧美亚洲人人爽| 在线观看亚洲视频| 69久久夜色精品国产69| 成人福利视频在线观看| 精品久久久久久久久久久| 亚洲美女www午夜| 中文字幕一精品亚洲无线一区| 91精品国产综合久久香蕉922| 国产999在线| 一本色道久久综合亚洲精品小说| 国产日韩在线精品av| 高跟丝袜欧美一区| 懂色aⅴ精品一区二区三区蜜月| 成人免费视频网址| 欧美激情精品在线| 亚洲xxx视频| 久久资源免费视频| 91国产精品电影| 欧美日韩在线视频一区二区| 国产视频久久久久| 久久99精品国产99久久6尤物| 亚洲国产高潮在线观看| 国产精品白丝av嫩草影院| 国产成人精品视频| 精品中文字幕视频| 国产精品网站大全| 国产成+人+综合+亚洲欧洲| 午夜美女久久久久爽久久| 性欧美xxxx视频在线观看| 永久免费看mv网站入口亚洲| 亚洲无av在线中文字幕| 奇米一区二区三区四区久久| 久久激情五月丁香伊人| 综合av色偷偷网| 色综合久久精品亚洲国产| 日韩在线观看免费网站| 日韩中文在线观看| 国产一区二区免费| 国产精品露脸自拍| 欧美成人在线影院| 97精品国产97久久久久久| 欧美一级大片在线观看| 日本精品va在线观看| 91干在线观看| 深夜福利日韩在线看| 亚洲国产精品美女| 久久久久在线观看| 狠狠躁天天躁日日躁欧美| 欧美高跟鞋交xxxxhd| 亚洲xxxxx性| 一本一本久久a久久精品综合小说| 久久综合伊人77777尤物| 原创国产精品91| 精品久久久国产| 亚洲精品国产精品自产a区红杏吧| 最近2019年日本中文免费字幕| 亚洲va久久久噜噜噜| 久久久精品一区| 免费97视频在线精品国自产拍| 97免费中文视频在线观看| 亚洲一区二区久久久| 亚洲国产婷婷香蕉久久久久久| 日韩中文字幕在线观看| 91日本在线视频| 欧美精品在线网站| 国产精品日韩精品| 国产日韩欧美综合| 日本a级片电影一区二区| 国产精品99久久久久久久久| 91在线中文字幕| 欧美日韩在线视频一区| 欧美日韩午夜激情| 精品亚洲一区二区三区在线观看| 久久伊人精品天天| 欧美日韩国产综合新一区| 成人黄色在线观看| 精品国产乱码久久久久久天美| 在线精品国产成人综合| 欧美老肥婆性猛交视频| 亚洲女人被黑人巨大进入| 欧美第一黄色网| 国产精品久久久久久久久久久久久久| 欧美激情精品久久久久久| 久久久免费av| 91精品91久久久久久| 国产精品日本精品| 欧美成人激情图片网| 中日韩午夜理伦电影免费| 国产成人在线一区二区| 色狠狠av一区二区三区香蕉蜜桃| 在线精品高清中文字幕| 欧美亚洲成人xxx| 茄子视频成人在线| 亚洲专区国产精品| 亚洲成人免费在线视频| 91在线直播亚洲| 亚洲欧美综合精品久久成人| 日韩av成人在线| 国产精品三级在线| 日韩免费在线视频| 2019中文在线观看| 亚洲香蕉伊综合在人在线视看| 国产欧美亚洲视频| 欧美做受高潮1| 亚洲一区二区免费| 欧美大片第1页| 成人在线播放av| 国产原创欧美精品| 2020国产精品视频| 欧美午夜性色大片在线观看| 一本色道久久88精品综合| 色中色综合影院手机版在线观看| 8090成年在线看片午夜|