开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜