有些情况下uiviewcontroller自带的rotate方法会不起作用,所以需要使用uidevice的Orientation Changed Notification方法
Orientation Changed Notification使用方法:
Orientation Changed Notification
Add to #AppDelegate.m didFinishLaunchingWithOptions
Function To Receive Notification Message
//********** ORIENTATION CHANGED **********
- (void)orientationChanged:(NSNotification *)note
{
NSLog(@"Orientation has changed: %d", [[note object] orientation]);
} 不过这样会有个问题,那就是UIDeviceOrientation是有6种,而UIInterfaceOrientation是4种,这样在使用
UIDeviceOrientationIsPortrait的时候如果取反就会包含unknown或者faceup等情况
typedef enum {
UIDeviceOrientationUnknown,
UIDeviceOrientationPortrait,
UIDeviceOrientationPortraitUpsideDown,
UIDeviceOrientationLandscapeLeft,
UIDeviceOrientationLandscapeRight,
UIDeviceOrientationFaceUp,
UIDeviceOrientationFaceDown
} UIDeviceOrientation;
解决方法:在
orientationChanged:(NSNotification *)note中加入如下代码:
if ([[note object] orientation] == UIDeviceOrientationUnknown ||
[[note object] orientation] == UIDeviceOrientationFaceUp ||
[[note object] orientation] == UIDeviceOrientationFaceDown) return;
这样就可以放心使用 UIDeviceOrientationIsPortrait了
本文介绍了解决iOS设备方向改变时,部分UIViewController旋转功能失效的问题。通过使用UIDeviceOrientationDidChangeNotification通知,可以有效监听设备方向的变化,并给出了具体实现代码。同时,针对UIDeviceOrientation与UIInterfaceOrientation不一致的情况提供了处理建议。
996

被折叠的 条评论
为什么被折叠?



