私はUISplitViewControllerを使用して画面の左側にメニューを実装するiPhone(特性コンパクト幅)で動作するアプリケーションを作成しました。 Storyboardを(23のビュー/ユニットで)広範囲にAutoLayoutと一緒に使用します。私は、Gmail Appやその他多くの機能に似た機能を目指しています。AutoLayoutをUISplitViewControllerと組み合わせて使用できますか?
メニューは、それがまだ目に見えるが、画面のわずか20%とディテール/セカンダリビューを残して、画面の80%を占めていたポートレートモードで表示されているとき。私はこれをviewWillLayoutSubviews & viewWillTransitionToSize splitViewController.preferredPrimaryColumnWidthFraction = 0.8を設定するために使用して達成しました。
私が悲しんでいる問題や副作用は、メニューが表示されているときにAutoLayoutを使用するセカンダリ・ビューのすべての内部ビュー・ボタンとラベルが押しつぶされ、オーバーレイされることです。
だから私の質問はこれです:それはアップ押しつぶさ効果を生じることなくUISplitViewController以内に自動レイアウトを使用することは可能でしょうか? AutoLayoutシステムをトリックしてレイアウトを崩さないようにするために何をしなければならないのですか?
補足:上のスクリーンショットでは、青のナビゲーションバーを持つセカンダリビューがSettingsTableViewController.mです。このコードにはNSLayoutConstraintsは含まれておらず、Main.storyboardの関連部分も含まれていませんでした。コメントの提案に続いて:Main.storyboardの「Add New Contraint」ポップアップメニューで、「Table View」に「Equal Widths」制約を追加できるようにスーパービューを選択する方法はありませんでした"
だから、代替手段として、私はSettingsTableViewController.mでviewDidLoadメソッドに次のコードを追加しましたが、それは効果がありませんでした。
self.view.superview addConstraint:[NSLayoutConstraint constraintWithItem:self.view
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:self.view.superview
attribute:NSLayoutAttributeWidth
multiplier:1
constant:0]];
どうすればよいですか?私のコードでは、メインビューの幅を直接設定または変更することはありません。幅は、メイン=詳細/セカンダリビューがUISplitViewController内に埋め込まれた結果として自動的に設定されます。 どうすれば右に移動させることができますか? – Steve
@Steve、メインビューの後続の制約を削除し、幅のメインビューをスーパービューに等しい(1:1)にします –
提案していただきありがとうございます。私は何をしたのかを説明するために質問を更新しました。 – Steve