让tableView的高度等于contentSize的高度、动态调整tableView的高度、tableView的高度自适应布局...
文章概要:
1、簡介下,tableView中的內容如何高度自適應的布局
2、如何做到讓tableView的高度動態調整
還是看圖作文吧~
首先,tableView的高度就是用戶能夠看見里面更大世界的那個窗口的大小,一般是固定的。
然后在cell里面布局的時候,像圖中粉紅色的view展示的內容需要全部展示出來,這樣的話這個粉紅view的高度就需要是動態變化的。比如一個UILabel,因為它是屬于有內置大小的控件(自身的size通過其內部的內容所決定可以自身計算出來的控件),你只需要設置這個label的原點(x,y)和寬度就行了,當然還要設置lineNumber = 0(不限制行數)。然后cell的高度不要設定成固定數值,cell的高度由內部view決定。
tableView是scrollView的子類,那如何設置contentSize呢?由最后一個cell的底部決定。
OK。這就是我們一般做的tableViewCell高度自適應的布局方式,思維發散下,我們直接用scrollView的時候,設置contentSize也要用這種布局策略:由內部決定外部。
-----------
然后第二個需求是這樣的:打開軟件彈出贈送的優惠券列表,優惠券多的情況下就固定tableView的高度,讓里面的內容可以滾動。如果優惠券少的情況下,里面的內容不足以滾動的情況下,就讓tableView本身的高度變為“剛好”能展示里面的內容就行了。
將這個需求轉化為技術語言的話就是,給定tableView的contentView一個最大的高度MaxHeight,如果contentView的真實高度小于MaxHeight的時候,tableView的高度就是contentView的真實高度,如果contentView的真實高度大于MaxHeight的時候,tableView的高度就固定在MaxHeight。
實現代碼:
- (void)setupMonitor {[self.homePageCouponsTableView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil]; }- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {CGRect tableFrame = self.homePageCouponsTableView.frame;tableFrame.size = self.homePageCouponsTableView.contentSize;if (tableFrame.size.height < 280) {[self.homePageCouponsTableView mas_remakeConstraints:^(MASConstraintMaker *make) {make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(10);make.left.mas_equalTo(self.bgView.mas_left).offset(15);make.right.mas_equalTo(self.bgView.mas_right).offset(-15);make.bottom.mas_equalTo(self.bgView.mas_bottom).offset(-25);make.height.mas_equalTo(tableFrame.size.height);}];[self.homePageCouponsTableView.superview layoutIfNeeded];} }?
轉載于:https://www.cnblogs.com/cchHers/p/9418562.html
總結
以上是生活随笔為你收集整理的让tableView的高度等于contentSize的高度、动态调整tableView的高度、tableView的高度自适应布局...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: join,列表和字典用for循环的删除,
- 下一篇: Linux目录与文件常见处理命令