数週間前に同じタイプの問題を解決しました。これを試すことができます-
最初にカスタム セルを用意し、自動レイアウトを使用してセルのサイズを自動調整します。つまり、セルの内容に応じてサイズを決定します。このリンクhttp://useyourloaf.com/blog/self-sizing-table-view-を参考にしてください。 cells.html
(コードを追加すると、これらの制約を追加するのが簡単になります)
基本的な考え方は、展開状態と収縮状態の制約を別々に追加し、それらを配列に格納することです。
展開された状態 - 図に示されている通常の状態。必要な制約を追加し、constraintForExpansionOfView と言う配列に保存します。
収縮状態 - この状態でもすべてのビューが存在しますが、収縮するすべてのビューはアルファ = 0 でセルの上部に移動します。つまり、収縮したビューは非表示になりますが、上部にあり、セルのサイズの決定を妨げません。 . 収縮状態にこれらの制約を追加している間、それらを使用して非アクティブ化します
constraint.active = false
また、これらの制約を別の配列 (constraintForContractionOfView など) に保存します。
したがって、最初は、追加中にそれらを非アクティブ化していないため、 constraintForExpansionが適用されます。
そして最後のステップ - アニメーションブロックの下で収縮するように表示したい場合は、次のコードを書いてください -
for constraint in constraintsForContractionOfView {
constraint.active = true
}
for constraint in constraintsForExpansionOfView {
constraint.active = false
}
アニメーションブロックの下でも、縮小したいビューのアルファを0のように変更します
someview.alpha = 0
そして、ビューを再度拡大すると、アニメーション ブロックで反対のことが行われます。つまり、constraintForExpansionOfViewをアクティブにし、 constrainsForContractionOfViewを非アクティブにして、すべての非表示ビューのアルファを 1 に変更します。