スクロールビュー内の動的サイズのコントローラを持つコンテナビューのサイズ調整
質問
UIScrollViewの中に、高さを動的に設定できるコントローラを持つコンテナビューを作成し、オートレイアウトを使用して自動的にサイズを設定しようとしています。
ビューコントローラAはscrollviewで、コンテナビューが含まれており、さらに下にコンテンツがあります。
ビューコントローラBは、ダイナミックサイズを持ち、ビューコントローラAのスクロールビューにすべてのコンテンツをフルハイトで表示させたいビューコントローラです。
BのダイナミックサイズがAのコンテナビューのサイズを自動的に設定することに問題があります。しかし、Aのコンテナビューに高さの制約を設定すると、次のようになります。 ,
ビューコントローラBの高さが250であれば、これは期待される出力でしょう。高さ1000でも問題なく動作するので、私が知る限りでは、すべての自動レイアウト制約が適切に設定されています。残念ながら、高さは実際には動的であるべきなので、高さ制約をまったく設定しないようにしたいと思います。
ビューコントローラー B がコンテンツに応じて自動的にサイズを更新するために設定できるものがあるかどうか、または私が見逃している他のトリックがあるかどうかはわかりません。何か助けがあれば、とてもありがたいです。
高さの制約を設定せずに、ビューコントローラBの大きさに合わせてAのコンテナビューのサイズを変更する方法はありますか?
どのように解決するのですか?
ええ、ありますよ。私は自分のプロジェクトの1つで、そのような動作を実現することができました。
あなたがしなければならないことは、Interface Builderでルートビューに設定された固定フレームを模倣する制約を追加しないよう、システムに伝えることです。これを行う最適な場所は、埋め込みセグエがトリガされたときに、コンテナビューコントローラです。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// You might want to check if this is your embed segue here
// in case there are other segues triggered from this view controller.
segue.destinationViewController.view.translatesAutoresizingMaskIntoConstraints = NO;
}
重要です。
コンテナにロードするビューが上から下まで制約されていることを確認し、垂直制約の1つの優先順位を1000より低い値に設定する必要があります(これには常に下制約を使用するのがよい習慣です)。これは、そうしないと Interface Builder から文句を言われるからです (これには正当な理由があります)。
設計時に、ルートビューは固定サイズ (高さ) を持っています。今、すべてのサブビューが固定の高さを持ち、すべて同じ優先順位を持つ固定の制約で接続されている場合、固定のルートビューの高さが偶然にもサブビューと垂直制約の合計高さと一致しない限り、これらの要件をすべて満たすことは不可能です。もし、制約の1つの優先順位を999に下げると、Interface Builderはどの制約を解除すればよいかを知っています。しかし、実行時に
translatesAutoresizingMaskIntoConstraints
プロパティが設定されている場合、ルートビューの固定フレームはなくなり、システムは999の優先順位の制約を代わりに使用します。
関連
-
EXC_BAD_ACCESS (code=2, address=0x0)
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] 制約条件の変更をアニメーションで表現するには?
-
[解決済み] iOSとWatchKitで画像のtintColorを変更する方法
-
[解決済み] UIViewの角丸とドロップシャドウ?
-
[解決済み】UIScrollView Scrollable Content Size Ambiguity
-
[解決済み】Xcode 6でAutoLayout制約を使用してアスペクトフィットの動作をエミュレートする
-
[解決済み】UICollectionView 自動レイアウトでセルサイズを変更する方法
-
[解決済み] Autolayout を使用して UIScrollview に制約を設定するにはどうすればよいですか?
-
[解決済み] テーブルビューのセクションヘッダーの高さを、オートレイアウトで動的に取得することは可能でしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[iOS]コンパイルエラー:ld: アーキテクチャ x86_64 のシンボルが見つかりません。
-
dyld: ライブラリがロードされていません。エラーの解決
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] iOS 8 UITableViewのセパレータインセット0が機能しない件
-
[解決済み] NSの接頭辞はどういう意味ですか?
-
[解決済み] UITextViewのマージン/パディングをなくす方法
-
[解決済み] NSOperationとGrand Central Dispatchの比較
-
[解決済み] CocoaPodsの最新バージョンにアップデートしますか?
-
[解決済み] NSNotificationCenterのaddObserver in Swift
-
[解決済み] iOS 11、Apple TV 4Kなどを搭載したXcode 9でワイヤレスデバッグを行う方法とは?