首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否获取iPad的当前方向?

是否获取iPad的当前方向?
EN

Stack Overflow用户
提问于 2010-04-29 23:49:32
回答 9查看 50.6K关注 0票数 64

在给定的事件处理程序(不是"shouldAutorotateToInterfaceOrientation“方法)中,如何检测当前的iPad方向?我有一个文本字段,我必须在横向视图中设置动画(当键盘出现时),而不是在纵向视图中,并且想知道我所在的方向,以查看动画是否必要。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-04-30 00:00:20

方向信息不是很一致,有几种方法。如果在视图控制器中,则可以使用interfaceOrientation属性。在其他地方,您可以呼叫:

代码语言:javascript
复制
[[UIDevice currentDevice] orientation]

或者,您可以请求接收方向更改通知:

代码语言:javascript
复制
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];

有些人还喜欢检查状态栏的方向:

代码语言:javascript
复制
[UIApplication sharedApplication].statusBarOrientation
票数 133
EN

Stack Overflow用户

发布于 2011-07-04 21:32:59

我认为

代码语言:javascript
复制
[[UIDevice currentDevice] orientation];

并不是真的可靠。有时候管用,有时候不行...在我的应用程序中,我使用

代码语言:javascript
复制
[[UIApplication sharedApplication]statusBarOrientation]; 

而且它工作得很好!

票数 35
EN

Stack Overflow用户

发布于 2011-05-04 01:31:46

我找到了一个解决FaceUp定向问题的技巧!

将方向检查推迟到应用程序开始运行之后,然后设置变量、视图大小等。!

代码语言:javascript
复制
//CODE

- (void)viewDidLoad {

  [super viewDidLoad];

  //DELAY
  [NSTimer scheduledTimerWithTimeInterval:0.5 
                     target:self 
                     selector:@selector(delayedCheck) 
                     userInfo:nil 
                     repeats:NO];

}


-(void)delayedCheck{

  //DETERMINE ORIENTATION
  if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait ){
      FACING = @"PU";
  }
  if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown ){
      FACING = @"PD";
  }
  if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft ){
      FACING = @"LL";
  }
  if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight ){
      FACING = @"LR";
  } 
  //DETERMINE ORIENTATION

  //START
  [self setStuff];
  //START

}


-(void)setStuff{

  if( FACING == @"PU" ){
          //logic for Portrait
  }
  else
  if( FACING == @"PD" ){
          //logic for PortraitUpsideDown
  }
  else{ 
  if( FACING == @"LL"){
          //logic for LandscapeLeft
  }
  else
  if( FACING == @"LR" ){
          //logic for LandscapeRight
  }

}

//CODE

您可以在'setStuff‘函数中使用addSubviews、position元素等...任何最初取决于方向的内容!

:D

-Chris Allinson

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2738734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档