0

プログラムで 2 つのビューが親ビューの幅を共有するようにしようとしています。サブビューの init と initWithFrame のいずれかを使用してみましたが、どちらの場合も、ストレッチを正しく機能させることができません。以下の例では、赤いウィンドウが画面の幅の半分に広がり、緑のウィンドウが残りの半分を占めることを期待しています。私は何が欠けていますか?

self.view = [[UIView alloc] initWithFrame:self.window.frame];
self.left = [[UIView alloc] init];
self.right = [[UIView alloc] init];

[self.left setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight)];
[self.right setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight)];

[self.view setBackgroundColor:[UIColor blueColor]];
[self.left setBackgroundColor:[UIColor redColor]];
[self.right setBackgroundColor:[UIColor greenColor]];

[self.left setContentMode:UIViewContentModeScaleToFill];
[self.right setContentMode:UIViewContentModeScaleToFill];


[self.view addSubview:self.left];
[self.view addSubview:self.right];
[self.view setAutoresizesSubviews:YES];

[self.window addSubview:self.view];

ありがとう!

4

2 に答える 2

1

2 つのビューの初期フレームを設定することはありません。

このコードはテスト済みで、UIViewController で動作しています

- (void)viewDidLoad
{
    [super viewDidLoad];

    CGRect fullFrame = self.view.frame;

    // position left view
    CGRect leftFrame = fullFrame;
    leftFrame.size.width = leftFrame.size.width / 2;
    self.left = [[UIView alloc] initWithFrame:leftFrame];

    // position right view
    CGRect rightFrame = leftFrame;
    rightFrame.origin.x = rightFrame.size.width;
    self.right = [[UIView alloc] initWithFrame:rightFrame];

    [self.left setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight)];
    [self.right setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight)];

    [self.view setBackgroundColor:[UIColor blueColor]];
    [self.left setBackgroundColor:[UIColor redColor]];
    [self.right setBackgroundColor:[UIColor greenColor]];

    [self.left setContentMode:UIViewContentModeScaleToFill];
    [self.right setContentMode:UIViewContentModeScaleToFill];


    [self.view addSubview:self.left];
    [self.view addSubview:self.right];
    [self.view setAutoresizesSubviews:YES];
}
于 2013-07-09T19:09:04.053 に答える