從iOS Code Snippets 看來的技術,挺方便的,轉載記錄於此。
在XCode4中,項目屬性設定中很容易就可以配置iOS項目支援裝置持有方向,
可惜,這個設定僅僅是在plist中儲存了相關設定,真正要控制某個UIView的裝置翻轉支援,你還得在相關的UIViewController中折騰-shouldAutorotateToInterfaceOrientation:函數,根據不同的裝置持有方向,來返回YES或NO。
這個code snippet簡化了相關操作,通過它你可以直接在shouldAutorotateToInterfaceOrientation:函數中查詢plist的相關設定,根據設定來進行返回,而不用手工代碼來進行一一判斷。
static inline NSString * NSStringFromUIInterfaceOriention(UIInterfaceOrientation orientation){ switch (orientation) { case UIInterfaceOrientationPortrait: return @"UIInterfaceOrientationPortrait"; case UIInterfaceOrientationPortraitUpsideDown: return @"UIInterfaceOrientationPortraitUpsideDown"; case UIInterfaceOrientationLandscapeLeft: return @"UIInterfaceOrientationLandscapeLeft"; case UIInterfaceOrientationLandscapeRight: return @"UIInterfaceOrientationLandscapeRight"; default: return @"Unexpected"; }}static inline BOOL UIInterfaceOrientationIsSupportedOrientation(UIInterfaceOrientation interfaceOrientation){ NSArray *array = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UISupportedInterfaceOrientations"]; NSUInteger index = [array indexOfObject:NSStringFromUIInterfaceOriention(interfaceOrientation)]; return index != NSNotFound;}
在shouldAutorotateToInterfaceOrientation:中進行使用:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ return UIInterfaceOrientationIsSupportedOrientation(interfaceOrientation);}
又及:有人討厭全域函數,那麼也可以考慮將其封閉到UIViewController中去,作為一個Category來存在。調用的時候加個self就成了,也蠻美觀的。