在给定的事件处理程序(不是"shouldAutorotateToInterfaceOrientation“方法)中,如何检测当前的iPad方向?我有一个文本字段,我必须在横向视图中设置动画(当键盘出现时),而不是在纵向视图中,并且想知道我所在的方向,以查看动画是否必要。
发布于 2010-04-30 00:00:20
方向信息不是很一致,有几种方法。如果在视图控制器中,则可以使用interfaceOrientation
属性。在其他地方,您可以呼叫:
[[UIDevice currentDevice] orientation]
或者,您可以请求接收方向更改通知:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];
有些人还喜欢检查状态栏的方向:
[UIApplication sharedApplication].statusBarOrientation
发布于 2011-07-04 21:32:59
我认为
[[UIDevice currentDevice] orientation];
并不是真的可靠。有时候管用,有时候不行...在我的应用程序中,我使用
[[UIApplication sharedApplication]statusBarOrientation];
而且它工作得很好!
发布于 2011-05-04 01:31:46
我找到了一个解决FaceUp定向问题的技巧!
将方向检查推迟到应用程序开始运行之后,然后设置变量、视图大小等。!
//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
https://stackoverflow.com/questions/2738734
复制相似问题