如何在iPhone中以编程方式检查设备的方向?
可能重复:
iPhone方向
如何在iPhone中的任何时间停止编程检查设备的方向?
谢谢。
这里是macrosUIDeviceOrientationIsLandscape
和UIDeviceOrientationIsPortrait
所以宁愿单独检查你可以这样做…
if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) { // code for landscape orientation }
要么
if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)) { // code for Portrait orientation }
尝试一下。
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; if ( ([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait) ) { // do something for Portrait mode } else if(([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight) || ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeLeft)) { // do something for Landscape mode }
也试试:
UIInterfaceOrientationIsPortrait(orientation)
和
UIInterfaceOrientationIsLandscape(orientation)
-[UIViewController interfaceOrientation]
但是,可以从当前的界面方向中检索deviceOrientation:
[[UIDevice currentDevice] orientation]
请阅读文档以获得更多信息,但您需要做更多的事情来完成这项工作。
您也可以检查function
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations if(interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) { //do for portrait } else { //do for Landscape } return (interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown); }
你应该放置[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
在你的AppDelegate didFinishLaunchingWithOptions
然后,在你的应用程序的任何地方,你可以得到当前的方向:
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
和testing方向:
UIInterfaceOrientationIsPortrait(orientation)
UIInterfaceOrientationIsLandscape(orientation)