運用AutoLayout 時,視圖內容的大小經過每個視圖的 intrinsicContentSize 屬性表達,它描繪了在數據未經緊縮或剪裁的狀況下表達視圖全部內容所需的最小空間。該屬性源於每個視圖所出現內容的自然屬性。
關於圖像視圖,內在內容大小與其出現的圖像大小相符。圖像越大,需求的內容大小也越大。
關於按鈕,內在內容的大小隨著按鈕的稱號而變化(title)。
經過視圖的內在內容大小,Auto Layout將視圖框架盡能夠地與其自然內容相婚配。無歧義的規劃通常需求給每個坐標軸設置兩個屬性,當視圖有一個內在內容大小時,則只需設置兩個屬性中的一個。
當改動了視圖的內在內容時,需求調用 invalidateIntrinsicContentSize 辦法,讓AutoLayout 知道在下次規劃時重新計算。
例子1:
#import "XJYLabel.h"
@implementation XJYLabel
- (instancetype)init {
if (self = [super init]) {
}
return self;
}
- (CGSize)intrinsicContentSize {
return CGSizeMake(100, 100);
}
@end
例子2:
#pragma mark - Layout
// 假如原有的視圖尺寸和如今的不相符,
- (void)layoutSubviews {
[super layoutSubviews];
_collectionView.frame = self.bounds;
if (!CGSizeEqualToSize(self.bounds.size, [self intrinsicContentSize])) {
[self invalidateIntrinsicContentSize];
}
}
- (CGSize)intrinsicContentSize {
return _layout.collectionViewContentSize;
}
#pragma mark - Public methods
- (void)reload {
[_collectionView reloadData];
[self invalidateIntrinsicContentSize];
}
【iOS Auto Layout intrinsicContentSize 內容大小】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!