是否有书面的方式来设置iPhone的方向?
我有一个应用程序,我希望在某些视图中支持设备旋转,但其他视图在横向模式下没有特别的意义,因此我将视图交换出来,我想强制将旋转设置为纵向。
UIDevice上有一个未公开的属性设置器,它可以完成这个技巧,但显然会生成一个编译器警告,并可能随着将来的SDK版本的消失而消失。
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];
是否有任何文件化的方式来强制定位?
更新:我想我会提供一个例子,因为我没有找到shouldAutorotateToInterfaceOrientation,因为我已经实现了。
我希望我的应用程序在View 1中支持横向和纵向,但在View 2中只支持纵向。我已经为所有视图实现了shouldAutorotateToInterfaceOrientation,但如果用户在View 1中处于横向模式,然后切换到View 2,我想强制电话旋转回肖像。
这对于后来的iPhone 3.1.2 SDK不再是问题。 现在它似乎要遵守将视图推回到堆栈上的请求方向。 这可能意味着您需要检测较旧的iPhone OS版本,并且只在最新版本之前应用setOrientation。
目前尚不清楚苹果的静态分析是否会理解您正在解决旧的SDK限制。 我个人已被Apple告知我在下次更新时删除了方法调用,因此我不确定是否对旧设备进行破解会通过审批流程。
这很长时间后,但以防万一有人不使用导航控制器和/或不希望使用未记录的方法:
UIViewController *c = [[UIViewController alloc]init];
[self presentModalViewController:c animated:NO];
[self dismissModalViewControllerAnimated:NO];
[c release];
呈现和解散香草视图控制器就足够了。
很明显,您仍然需要确认或拒绝您的重写shouldAutorotateToInterfaceOrientation的方向。 但这会导致shouldAutorotate ...被系统再次调用。
如果你想迫使它从肖像旋转到风景,这里是代码。 请注意,您需要调整视图的中心。 我注意到我没有把视图放在正确的地方。 否则,它完美地工作。 谢谢你的提示。
if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation)){
[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:0.5f];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90));
self.view.bounds = CGRectMake(0.0f, 0.0f, 480.0f, 320.0f);
self.view.center = CGPointMake(160.0f, 240.0f);
[UIView commitAnimations];
}
链接地址: http://www.djcxy.com/p/19093.html
上一篇: Is there a documented way to set the iPhone orientation?