2013-11-01 3 views
1

Я использую контроллер представления контейнера, чтобы добавить подвид в мой текущий контроллер представления через 3 секунды:addChildViewController не работает, когда пейзаж

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    self.view.backgroundColor = [UIColor greenColor]; 
    [self performSelector:@selector(open) withObject:nil afterDelay:3.0]; 
} 
-(void)open{ 
    ViewController2 *test = [[ViewController2 alloc] init]; 
    test.view.backgroundColor = [UIColor redColor]; 

    [self addChildViewController:test]; 
    [self.view addSubview:test.view]; 
} 

ViewController2 простой вид только с этим на INIT:

self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 

Вот вещь, если открыть в портретной вторую точку зрения, и я повернуть на альбомную, красный цвет заполняет экран, но если открыть второй вид из ландшафта, это происходит:

enter image description here

Любые подсказки?

ответ

3

Просто нужно установить рамку. Интерфейс представления при открытии принимает размер прогнозируемого представления.

-(void)open{ 
    ViewController2 *test = [[ViewController2 alloc] init]; 
    test.view.backgroundColor = [UIColor redColor]; 
    test.view.frame = self.view.bounds; 
    [self addChildViewController:test]; 
    [self.view addSubview:test.view]; 
} 

В качестве предложения: приступить к изучению автоотключения!

0

Это решение для вас.

-(void)open{ 
 
    test = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController2"]; 
 
    test.view.backgroundColor = [UIColor redColor]; 
 
    test.view.frame = self.view.bounds; 
 
    [self addChildViewController:test]; 
 
    [self.view addSubview:test.view]; 
 
}

Смежные вопросы