0

私は、古いiphoneと新しいiphoneのサイズの違いに関して、ビューのサイズを制御する方法をよりよく理解しようとしています。

以下の例のようなデザインがある場合、これをサブビューの観点からプログラムでどのようにコーディングする必要がありますか。

例

ひどく描かれた図を失礼しますが、それは説明するのに役立つはずです。

この例では、fieldViewとbuttonViewは、小さくすると見栄えが良くないオブジェクトを持っているため、常に固定サイズのままにする必要があります。ただし、ロゴビューにはロゴ自体の別のサブビューがあるため、デバイス/画面サイズによっては縮小される可能性があります。

これはどのように達成されますか?サンプルサブビューをプログラムで設定します。私が理解していない部分は、サブビューが作成されるviewDidLoadで、次のような順序で作成する必要がないということです。

-(void)ViewDidLoad {
CGRect screen = [[UIScreen mainScreen] applicationFrame];
wholeView = [[UIView alloc] initWithFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, self.view.bounds.size.width, self.view.bounds.size.height)];

 logoView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,150);
fieldView = [[UITableView alloc] initWithFrame:CGRectMake(0, logoView.bounds.size.height, 320, 100);

使用について理解しています

autoresizingMask

しかし、実際に利用可能なビューサイズに応じて高さを計算するという点で、どのように使用されるのでしょうか。

4

1 に答える 1

1

私はあなたの疑問を理解しているとは言えませんが、以下を追加することでうまくいくはずです。

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
logoView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

残りのビューでは、マージンと高さ/幅の両方が固定されたままになります(つまり、のデフォルト値UIViewAutoresizingNoneautoresizingMask問題ありません)。

利用可能な実際のビューサイズに応じて高さを計算するという点で、どのように使用されるのでしょうか。

基本的に、iPhoneディスプレイに表示されるのは、ビューの階層です。この階層の最上位のビューはUIWindowです。これはデバイス画面と同じサイズです(そのように初期化されます)。

さて、上記のコードでは、logoViewマージンが固定されています。これは、コンテナビューフレームから同じ距離にとどまるということを意味します。サイズが柔軟であると指定した場合、logoViewは単にスペース全体を占有して、マージンを固定します。

于 2013-02-21T14:47:19.797 に答える