UICollectionView的高度自適應

estimatedItemSize是iOS 8中蘋果最新推出的黑魔法锨并,可以讓CollectionView中也能讓 cell 自適應內(nèi)容大小,達到自動適應高度的預期效果喊儡!

UICollectionView的高度自適應的原理:

1.CollectionView根據(jù) layout 的 estimatedItemSize 算出估計的 contentSize敬察,有了 contentSize CollectionView就開始顯示

2.CollectionView 在顯示的過程中,即將被顯示的 cell 根據(jù) autolayout 的約束算出自適應內(nèi)容的 size

3.layout 從 CollectionView 里獲取更新過的 size attribute

4.layout 返回最終的 size attribute 給 CollectionView

5.CollectionView 使用這個最終的 size attribute 展示 cell

UICollectionView的高度自適應的實現(xiàn):

1. 設置 estimatdItemSize

設置 UICollectionViewFlowLayout 的 estimatdItemSize 的預估高度

UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];

layout.estimatedItemSize = CGSizeMake([[UIScreen mainScreen] bounds].size.width, 200);

estimatdItemSize 的默認值為 CGSizeZero ,所以要給一個非0值開啟高度估算镊掖。

//解決ios8上自動布局的問題

- (BOOL) shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds{

? ? return YES;

}

2.對cell 進行約束添加

#import"LastCell.h"

#import"Masonry.h"

@implementationLastCell

-(instancetype)initWithFrame:(CGRect)frame{

self= [super initWithFrame: frame];

if(self) {

self.backgroundColor= [UIColor whiteColor];

self.testLabel= [UILabel new];

[self.contentView addSubview: self.testLabel];

self.testImage= [UIImageView new];

[self.contentView addSubview: self.testImage];

self.testLabel.numberOfLines=0;

self.testImage.backgroundColor= [UIColor redColor];

self.testLabel.backgroundColor= [UIColor purpleColor];

[self creatAutoLayout];

}

returnself;

}

- (void)creatAutoLayout{

[self.contentView mas_makeConstraints:^(MASConstraintMaker*make) {

make.left.top.mas_equalTo(0);

make.width.mas_equalTo(300);

make.bottom.mas_equalTo(self.testLabel.mas_bottom).offset(12.0);

}];

[self.testImage mas_makeConstraints:^(MASConstraintMaker*make) {

make.left.width.top.mas_equalTo(self.contentView);

make.height.mas_equalTo(150);

}];

[self.testLabel mas_makeConstraints:^(MASConstraintMaker*make) {

make.top.mas_equalTo(self.testImage.mas_bottom).offset(10.0);

make.left.width.mas_equalTo(self.testImage);

}];

}

- (UICollectionViewLayoutAttributes*)preferredLayoutAttributesFittingAttributes:(UICollectionViewLayoutAttributes*)layoutAttributes {

[self setNeedsLayout];

[self layoutIfNeeded];

CGSize size = [self.contentView systemLayoutSizeFittingSize: layoutAttributes.size];

CGRect cellFrame = layoutAttributes.frame;

cellFrame.size.height= size.height;

layoutAttributes.frame= cellFrame;

return layoutAttributes;

}

@end


傳送門

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子环形,更是在濱河造成了極大的恐慌,老刑警劉巖衙傀,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抬吟,死亡現(xiàn)場離奇詭異,居然都是意外死亡统抬,警方通過查閱死者的電腦和手機火本,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓄喇,“玉大人发侵,你說我怎么就攤上這事∽逼” “怎么了刃鳄?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長钱骂。 經(jīng)常有香客問我叔锐,道長,這世上最難降的妖魔是什么见秽? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任愉烙,我火速辦了婚禮,結(jié)果婚禮上解取,老公的妹妹穿的比我還像新娘步责。我一直安慰自己,他們只是感情好禀苦,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布蔓肯。 她就那樣靜靜地躺著,像睡著了一般振乏。 火紅的嫁衣襯著肌膚如雪蔗包。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天慧邮,我揣著相機與錄音调限,去河邊找鬼舟陆。 笑死,一個胖子當著我的面吹牛耻矮,可吹牛的內(nèi)容都是我干的秦躯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼淘钟,長吁一口氣:“原來是場噩夢啊……” “哼宦赠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起米母,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤勾扭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后铁瞒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妙色,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年慧耍,在試婚紗的時候發(fā)現(xiàn)自己被綠了身辨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡芍碧,死狀恐怖煌珊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情泌豆,我是刑警寧澤定庵,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站踪危,受9級特大地震影響蔬浙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贞远,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一畴博、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蓝仲,春花似錦俱病、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至擎勘,卻和暖如春咱揍,著一層夾襖步出監(jiān)牢的瞬間棚饵,已是汗流浹背煤裙。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留噪漾,地道東北人硼砰。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像欣硼,于是被迫代替她去往敵國和親题翰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容