Как бы мне загрузить xib, когда ориентация устройства изменяется в Xcode?


Как я буду загружать новый xib, когда ориентация устройства изменится? т. е. загрузить альбомно-ориентированный xib, когда устройство повернуто в альбомную ориентацию и наоборот с портретной ориентацией. и как я буду автоматически обнаруживать изменение ориентации и приспосабливаться оттуда?

1 6

1 ответ:

По-видимому, все, что мне нужно сделать, это создать приложение на основе представления turn shouldAutoRotateToInterfaceOrientaion в YES и создать два подкласса uiviewcontroller с отдельными файлами xib, а затем добавить это в контроллер вида приложения:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged) name:UIDeviceOrientationDidChangeNotification object:nil];

И добавьте этот метод в контроллер вида приложения:

-(void)orientationChanged {
    UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
    if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown) {
        [[NSBundle mainBundle] loadNibNamed:@"Portrait" owner:self options:nil];
    }
    else {
        [[NSBundle mainBundle] loadNibNamed:@"Landscape" owner:self options:nil];
    }

}

И вот оно, когда устройство поворачивается, xib автоматически загружается в правильной ориентации.

Edit: вам также нужно добавить два viewcontrollers программно(@property и @synthesize them also), и два ViewController в appviewcontroller.xib в IB каждый с именем класса, соответствующим подклассу viewcontroller каждого созданного вами xib. затем добавьте представление подключите его к владельцу файла и подключите розетки В IB к контроллерам представления, которые вы создали в ib, и это должно быть все