我有這個iPad應用程序,具有不同的NIB和視圖。 每個視圖都有兩個NIB,一個用於potrait方向,另一個用於橫向,所以我正在尋找一種以編程方式切換給定UIViewController的NIB的方法。以編程方式更改UIViewController視圖NIB的最佳方法
現在我有這個功能,我使用的每個控制器的willRotateToInterfaceOrientation方法:
void UIHandleRotation(UIViewController *controller, NSString *nibName, UIInterfaceOrientation orientation, BOOL transform){
double angle = 0.0;
if(orientation == UIInterfaceOrientationPortrait) {
angle = PI * 2 /* 360° */;
}
else if(orientation == UIInterfaceOrientationLandscapeLeft){
angle = PI + PI/2 /* 270 ° */;
// Each landscape nib is [nib-name]L
nibName = [NSString stringWithFormat:@"%@L", nibName];
}
[[NSBundle mainBundle] loadNibNamed:nibName owner:controller options:nil];
if(transform) {
controller.view.transform = CGAffineTransformMakeRotation(angle);
}
}
但它讓我奇怪的行爲(亂UI控件的位置,該網點沒有在接口關聯建設者等等)。
難道我做錯了什麼或有隻是一個實現這個更好的辦法? 感謝
注意:我不使用導航控制器,所以我不能使用此解決方案Easiest way to support multiple orientations? How do I load a custom NIB when the application is in Landscape?
請參閱我剛剛添加的說明。 – 2010-11-30 20:44:46
您可以使用導航控制器及其最簡單的方式來執行此操作。您不必在界面中暴露導航控制器。我鏈接的例子並不這樣做。用戶無法知道正在使用導航控制器。 – TechZen 2010-11-30 22:18:49