關于AutoLayout原生Content Hugging和Content Resistance小研究

之前就知道系統AutoLayout有拉伸和擠壓的設置,平時用Masonry設置優先級也是可以解決這樣的擠壓和壓縮的問題。但是設置Masonry的優先級自己一直設置不好。可能自己太菜了,或者自己對于Masonry研究的不是很精通。

今天用Reveal調試設置了一下竟然達到了自己預想的結果,所以今天就仔細的研究一下。

看來默認的Content Hugging的默認值是250,我只要輕輕的增加一個,就壓縮了。

從上面的圖中我們可以得到:

Content Hugging: 默認大小250

Content Resistance: 默認大小750

關于一些詳細的介紹可以看我的小伙伴的文章 Masonry 筆記

- (UILayoutPriority)contentHuggingPriorityForAxis:(UILayoutConstraintAxis)axis NS_AVAILABLE_IOS(6_0);
- (void)setContentHuggingPriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis NS_AVAILABLE_IOS(6_0);

- (UILayoutPriority)contentCompressionResistancePriorityForAxis:(UILayoutConstraintAxis)axis NS_AVAILABLE_IOS(6_0);
- (void)setContentCompressionResistancePriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis NS_AVAILABLE_IOS(6_0);

UILayoutPriority

布局優先級用于向基于約束的布局系統指示哪些約束更重要,從而允許系統在滿足系統整體的約束時進行適當的權衡

UILayoutPriorityRequired:1000 必需的約束。 不要指定超過此數字的布局約束。

UILayoutPriorityDefaultHigh:750 這是按鈕抵抗其內容壓縮的優先級。

UILayoutPriorityDefaultLow:250 這是按鈕在水平方向上擁抱其內容的優先級。

UILayoutPriorityFittingSizeLevel:50 當向一個視圖發送一個systemLayoutSizeFittingSize:消息時,計算最接近目標大小的大小。 這是視圖希望在該計算中符合目標大小的優先級。 這是相當低。 通常不恰當地在這個優先級上進行約束。 你想要更高或更低。

UILayoutConstraintAxis

UILayoutConstraintAxisHorizontal : 水平約束

UILayoutConstraintAxisVertical: 豎直約束

我們根據上面說的根據我們剛才Reveal設置250以上就是UILayoutPriorityDefaultHigh,設置水平UILayoutConstraintAxisHorizontal

[_locationTitleLabel setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal];

我們運行一下看一下。

設置成功。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容