之前就知道系統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];
我們運行一下看一下。
設置成功。