About the orientation of iPhone
How to get the current orientation of iPhone? I surfed this site, and found two m开发者_如何学Goethods as followings.
- [UIApplication sharedApplication].statusBarOrientation;
- [[UIDevice currentDevice] orientation];
Which one is the right way to get the current orientation ? I tried two methods under simulator 4.1, but there are some problems for both methods.
Register your class to listen to UIDeviceOrientationDidChangeNotification then handle the device orientation accordingly.
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(deviceRotated:)
name:UIDeviceOrientationDidChangeNotification
object:[UIDevice currentDevice]];
and handle the device's orientation properly:
- (void)deviceRotated: (id) sender{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIDeviceOrientationFaceUp ||
orientation == UIDeviceOrientationFaceDown)
{
//Device rotated up/down
}
if (orientation == UIDeviceOrientationPortraitUpsideDown)
{
}
else if (orientation == UIDeviceOrientationLandscapeLeft)
{
}
else if (orientation == UIDeviceOrientationLandscapeRight)
{
}
}
[[UIDevice currentDevice] orientation]
gets the current physical orientation of the device. [UIApplication sharedApplication].statusBarOrientation
gets the orientation of the UI. If the app ever returns NO to the shouldAutorotateToInterfaceOrientation:
method, the two values will not be the same.
精彩评论