Expand tableview and increase scrollview content size by an appropriate difference on clicking a button inside a table cell

后端 未结 2 882
面向向阳花
面向向阳花 2021-01-25 05:35

I have a UITableView which has been added inside a UIScrollView as part of a view controller which adheres to a part of the mockup shown below:-

As you can see

2条回答
  •  感情败类
    2021-01-25 06:11

    Instead of calculating heights and modifying the scroll view's .contentSize, you can use auto-layout with a subclassed UITableView that determines its own height:

    final class ContentSizedTableView: UITableView {
    
        override var contentSize:CGSize {
            didSet {
                invalidateIntrinsicContentSize()
            }
        }
    
        override var intrinsicContentSize: CGSize {
            layoutIfNeeded()
            return CGSize(width: UIView.noIntrinsicMetric, height: contentSize.height)
        }
    
    }
    

    When you change the table view - either adding / removing rows or sections, or changing the row heights - the table view's intrinsicContentSize will be automatically updated, and its height will grow or shrink just like a multi-line UILabel.

    With the constraints setup properly, auto-layout will handle the scroll view's content size for you.

提交回复
热议问题