23

loadView でビューをレイアウトするための正しいサイズを一貫して決定する方法は?

UIViewController が UINavigationController にプッシュされるか、UITabBarController が存在するか、またはその両方であるさまざまなケースがあります。これらの要素は使用可能な画面領域を変更し、値をハードコーディングすると一貫性がなくなります。

loadView が呼び出された時点で、サブビューを追加するコンテナー ビューのサイズを変更する方法を知りたいと考えています。

私は UIViewController ガイドに目を通し、Apple は UIScreen mainScreen applicationFrame を使用していますが、彼らの例ではフルスクリーン アプリを作成しているため、これが行われています。

ここでいくつかの回答を見てきましたが、一貫した方法でこれを行う方法に対処するものはありません。

助けてくれてありがとう。

4

4 に答える 4

16

正確なサイズを知る必要はありません。VC はそれ自体のサイズを調整する必要はありません。それは親の責任です。Twitter で Apple UIKit エンジニアの Andy Matuschak が確認したように、 UIViewwithを作成するだけです[[UIView alloc] init]

于 2013-09-06T23:26:01.417 に答える
0

「正しい」答えは、おそらくカスタム UIView サブクラスを作成し、layoutSubviews のオーバーライドですべてのサブビュー ビューの配置を行うことです。サブクラスは、loadView の self.view に割り当てられます。

ただし、viewDidLoad を使用して同じサイズのサブビューを self.view に追加することもできます。(ただし、このビューのサイズを変更する準備をしておく必要があります。 -- autoresizingMasks を正しく設定することは、これを行う良い方法です。)

于 2011-11-04T18:13:37.040 に答える
-1

アプリを作成しました。いくつかの UITextViews、UIButtons、および UISegment コントロールをロードします。viewWillAppear で行ったことは、作成した resize メソッドを呼び出します。

UIViewController 内のすべてのサブビューのサイズをプログラムで変更します。これは、IB での自動サイズ変更が非常に優れているためです。

私の calcViewSize 関数では、次のような寸法を取得します。

CGFloat width = [[UIScreen mainScreen] applicationFrame].size.width;
CGFloat height = self.view.frame.size.height; //this will retrieve the frame we are drawn into.

次に、サイズを変更したい UIViewController の各サブビューを見て、そのフレームを変更します。IBOutlets にこれらのビューのプロパティがあるので、ビューが何であるかは既にわかっています。

Interface Builder を使用して寸法を取得します。

最後の注意: IB で寸法を変更するには、ビューを選択し、属性インスペクターを選択し、ステータス バーを無効にします。サイズ インスペクターでは、ビューのサイズを変更し、サブビューを再配置し、コードに配置する数字を書き留めることができます。 .

于 2011-09-20T14:32:05.157 に答える