0

uitableview でいくつかのビューを折りたたんで展開する必要がある 1 つの機能を実現したいと考えています。

セクションを作成し、セクションをクリックすると、そのセクションのセルを表示または非表示にする1つのアプローチを実行しました。

私の問題は、行の最初のセクションのすぐ上に折りたたみ可能であってはならないもう 1 つのビューがあることです。このシナリオでは何が適切な解決策であるべきか少し混乱しています。

シナリオは非常に複雑なので、簡単にするためにいくつかのスケッチを描きました。

これを達成するための適切な解決策または例を教えてください。

ここに画像の説明を入力

4

3 に答える 3

0

ドロップダウンセルを行った方法を維持し、テーブルビュー全体の上部に配置されるテーブルビューヘッダービュー (セクションヘッダーではない) を使用できます。uiview をストーリーボードの tableview の一番上にドラッグするか、viewDidLoad でプログラムによってドラッグできます。

 UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)];
 UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)];
 [headerView addSubview:imageView];
 UILabel *labelView = [[UILabel alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)];
 [headerView addSubview:labelView];
 self.tableView.tableHeaderView = headerView;

これは次のようになります (ただし、これはコレクション ビュー用であるため、セルは明らかに全幅になります)。グローバル ヘッダー、セクション ヘッダー、セルの順に続きます。

ここに画像の説明を入力

于 2015-12-27T11:26:46.383 に答える
0

数週間前に同じタイプの問題を解決しました。これを試すことができます-

最初にカスタム セルを用意し、自動レイアウトを使用してセルのサイズを自動調整します。つまり、セルの内容に応じてサイズを決定します。このリンク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 に変更します。

于 2015-12-27T11:34:58.930 に答える