Измените перо программно при изменении ориентации - PullRequest
0 голосов
/ 10 ноября 2011

Я загружаю свои перья как в init:

self = [super initWithNibName:@"PageView_iPhone" bundle:nil];

Но как мне изменить это во время выполнения (то есть после инициализации), если ориентация изменится?initWithNibName не будет работать.

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011

Если вы действительно хотите загрузить другое перо, вы можете использовать:

[[NSBundle mainBundle] loadNibNamed:@"PageView_iPhone" owner:self options:nil];
NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"PageView_iPhone"
                                              owner:self
                                            options:nil];

PageView_iPhone* myView = [nibViews objectAtIndex:0];
1 голос
/ 10 ноября 2011

Во время инициализации я настраиваю свои представления (создаю их программно) и создаю дополнительные CGPoint для позиций центра или CGRect для фреймов для каждого вида в контроллере представления.

После того, как представления созданы в init, я вызываюметод с именем layoutViewsForOrientation, чтобы установить начальную позицию, передавая текущую ориентацию строки состояния.Когда ориентация меняется, я использую этот код:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    BOOL result = NO;
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        result = (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
    } else {
        result = YES;
    }
    if( result == YES ) [self layoutViewsForOrientation:interfaceOrientation];
    return result;
}

Возможно, есть более простой способ, но он хорошо подходит для моих нужд.

...