Dynamic ContentSize TableView


射手がいなければ、自分で良いコードをたくさん探すことができます.
そのソースコードを探すのは少し難しいですが、多彩なプロジェクトコードをもっと見なければなりません.
シナリオやブログ記事のような細かいコードブロックはもちろん役に立ちますが、視野を広げるためには、プロジェクトファイルを多く見るべきだと思います.
昔の私は...心血を注いだが、何の役にも立たない努力ではない.
その時は何を言っているのかさっぱり分からず、ついて行った.
私について、私の記憶について頭の中に残って、記憶を追跡して、再びコードを解きました.

Code

class DynamicCollectionView: UICollectionView {

    var isDynamicSizeRequired = false
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
        if !__CGSizeEqualToSize(bounds.size, self.intrinsicContentSize) {// intrinsic size가 원래 컨텐츠 사이즌가벼
            
            if self.intrinsicContentSize.height > frame.size.height {
                self.invalidateIntrinsicContentSize()
            }
            if isDynamicSizeRequired {
                self.invalidateIntrinsicContentSize()
            }
            
        }
    }
    
    override var intrinsicContentSize: CGSize {
        return contentSize
    }
}
^以上のコードが参照するコードです.
同様にカスタマイズされたTableビューに適用すればよく、__CGSizeEqualToSizeは関数を使用せずに変更されます.
文字通り、CGSizeと同一か否かを比較する関数であり、この関数を用いる場合、==CGSizeには適用されないと推測される.==記号を使ったコードをどこかで見たことがあります.そうだ、IGlistKit...それもすぐに見て
class DynamicHeightTableView: UITableView {
    
    var isDynamicSizeRequired = false
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
        if bounds.size != self.intrinsicContentSize {

            if self.intrinsicContentSize.height > frame.size.height {
                self.invalidateIntrinsicContentSize()
            }

        }

        if isDynamicSizeRequired {
            self.invalidateIntrinsicContentSize()
        }

    }
    
    override var intrinsicContentSize: CGSize {
        return contentSize
    }

}
上記の部分を除いては同じです

Usage

    // MARK: View Components
    let tableView: DynamicHeightTableView = {
        let table = DynamicHeightTableView()
        table.isDynamicSizeRequired = true
        
        // register cell
        table.register(UITableViewCell.self,
                       forCellReuseIdentifier: "cell")
        return table
    }()
Anchorサーカス

トップテールリーディングは自分の好きな場所で
重要なのは高さと底のアンカー!!!
いつものようにequalToを使ってはいけません.
ダイナミックなのでgreaterThanOrEqualToConstantを使用

これをどこに使いましたか。


あの...Table Viewユニットを展開...まだ...うまくいかなかった...うまくいかなかった...なんだろう…レイアウトがおかしいだけ...底部が拡張を遮られたら...だから^^この方法を使いました.
では、また.