3

サブビューとして aUIScrollViewを持っています。UIViewUIViewは、垂直に配置された一連のデータ入力フィールドがあります。基本的には、固定形式のデータ入力フォームです。

縦のサイズはそのままで、横のサイズをデバイスの向きによって変わるUIView'sのサイズに合わせて調整したいです。UIScrollViewこれはすべて の詳細ビューに配置されていることに注意してくださいUISplitViewController

そのため、ユーザーは垂直方向にスクロールする必要がありますが、水平方向ではなく、すべてのテキスト フィールドがUIView画面の水平方向に収まるようにサイズを変更する必要があります。

現在UIView、フレーム幅を変更してフレーム幅に合わせてサイズを変更するとUIScrollView'sUIViewサブビュー (テキスト フィールド) は IB で設定された制約に従ってサイズ変更されません。UIViewちょうど切り取られているようです。水平スクロールがないため、この側面は正しく機能しています。

サブビューの自動サイズ変更を onUIViewと on に設定していUIScrollViewます。

ここで何をすべきかについてのヒントはありますか? UIViewまた、デバイスの向きが変わった場合にサイズを変更するコードをどこに配置しますか?

追加情報。

を含むUIViewと同じ NIB に別のビューとして IB でを作成しました。IB で作成する唯一の方法は、目的の幅と高さの別のビューとして設定することです。次に IBOutlet を作成し、このビューをサブビューとしてメソッドに追加します。サブビューが水平方向にサイズ変更されていないことを除いて、これはすべて正しく表示されているビューでうまくいくようです。DetailViewControllerUIScrollViewUIScrollViewUIScrollViewviewDidLoadUIView

ここで私が間違っているかもしれないことについて何か提案はありますか?

4

2 に答える 2

3

ビューをxibから直接スクロールビュー内に配置しないことを使用しているため、IBはスーパービューと関係のある制約を与えるオプションを提供しません。プログラムで制約を追加する必要がある場合があります。こちらを参照してください。

編集:

また、ビューで以下を使用してみてください(試していません。ドキュメントに従って動作するはずですが、自動レイアウトではわかりません):

self.view.autoresizesSubviews = YES;

または、自動レイアウトをまったく使用したくない場合は、サイズインスペクターでビューを拡大 (水平/垂直) に設定する以前の方法で十分です。このためには、自動レイアウトを無効にする必要があります。xib を選択 -> File Inspector -> auto layout チェックボックスのチェックを外す

于 2013-07-10T06:55:34.960 に答える