下面是幾個我試過的方法
- 在 翻轉的時候去重新配置所有元件的位置
- 直接在翻轉後去換一個特定方向的 UIViewController
這兩種方法都很麻煩而且費工,簡直就是大茶包一個。
今天發現一個新的方法!
不僅簡單又方便,可以大大省去很多時間,下面這個 Method 是關鍵。
NSBundle UIKit Additions Reference
不囉唆來一段簡單的範例程式,相信簡單幾行大家就會很快地瞭解了。
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
duration:(NSTimeInterval)duration
{
NSLog(@" do rotation of the view controller");
if( UIInterfaceOrientationIsLandscape(interfaceOrientation) )
{
[self viewDidUnload];
[[NSBundle mainBundle] loadNibNamed: [NSString stringWithFormat:@"%@-landscape", NSStringFromClass([self class])]
owner: self
options: nil];
[self viewDidLoad];
NSLog(@" landscape");
}
else
{
[self viewDidUnload];
[[NSBundle mainBundle] loadNibNamed: [NSString stringWithFormat:@"%@", NSStringFromClass([self class])]
owner: self
options: nil];
[self viewDidLoad];
NSLog(@" portrait");
}
}
當然別忘記在 Reload Views之後重新 init 所有的 values與行為,不過我想這應該原本設計客制化的 UIs 的時候就已經做好了。