我已經搜索了幾個小時沒有運氣,所以我來找你們救我在這裏!iOS7 Autoresize當以編程方式切換視圖
顯然,我無法找到正確的信息來說明如何去做這件事(或最好的方法)。我有一個支持縱向和橫向的應用程序(不支持上下顛倒)。不過,縱向和橫向視圖完全不同,所以我需要使用兩個視圖來表示每個視圖。我是否正確地假設我的故事板需要3個視圖控制器(主要的一個,然後是一個用於肖像和一個用於風景?我只用了兩個,但我沒有看到如果我從這個肖像開始怎麼做,並且然後需要加載景觀,我將不得不刪除肖像,這是我的代碼在哪裏?
我的viewcontroller有正確的約束,以保持標籤頂部中心,但是當以編程方式替換或交換視圖時,它似乎自動調整大小不會被調用,我最終通過重置子視圖上的幀來解決這個問題,但現在當設備翻轉時,畫面標籤永遠向右移動,所以我只想知道正確的方法來做到這一點,因爲我相信這不可能是這樣。
至於代碼,我有一個對象 - 視圖 - 控制類以下修改方法......
@interface AMBViewController()
@property (strong, nonatomic) UIViewController *portraitViewController;
@property (strong, nonatomic) UIViewController *landscapeViewController;
@end
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
UIApplication *app = [UIApplication sharedApplication];
UIInterfaceOrientation currentOrientation = app.statusBarOrientation;
[self doLayoutForOrientation:currentOrientation];
}
-(void) willAnimateRotationToInterfaceOrientation:
(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[self doLayoutForOrientation:toInterfaceOrientation];
}
-(void) doLayoutForOrientation:(UIInterfaceOrientation)orientation {
if (UIInterfaceOrientationIsPortrait(orientation)) {
self.portraitViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Portrait"];
if (self.landscapeViewController != nil) {
[self.landscapeViewController.view removeFromSuperview];
self.landscapeViewController = nil;
}
self.portraitViewController.view.frame = self.view.bounds;
[self.view insertSubview:self.portraitViewController.view atIndex:0];
} else {
self.landscapeViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Landscape"];
if (self.portraitViewController != nil) {
[self.portraitViewController.view removeFromSuperview];
self.portraitViewController = nil;
}
self.landscapeViewController.view.frame = self.view.bounds;
[self.view insertSubview:self.landscapeViewController.view atIndex:0];
}
}
只是要我的故事板,我有一個空白根控制器(子類AMBViewController)和另外兩個視圖控制器「風景」和「清除縱向「
我也可能會提到,如果您將設備旋轉一整圈(4個右側或4個左側旋轉),標籤只能在縱向視圖中顯示。如果你右轉(現在是倒過來),但然後左轉,它仍然很好。只有當屏幕從右/左景觀翻轉到左/右景觀時纔會出現混亂。真的很奇怪,我知道我必須省略一些重要的東西。
任何幫助,非常感謝。謝謝!