检测iphone方向的最佳方法

时间:2012-01-11 21:28:59

标签: iphone ios xcode4

我正在创建一个应用程序,我根据用户是否在纵向和横向模式下移动iphone来更改按钮布局。我认为放置代码的最佳位置是

-(BOOL) shouldautorotatetointerfaceorientation

但是有两个主要问题

  1. 当页面加载时,应该至少调用3次调用tointerfaceorientation。我只想执行一次代码。

  2. 即使我使用Modal segue从viewController1(page1)移动到viewController2(page2)并且我在第2页上旋转我的iphone,它仍然会调用我的viewcontroller1中的自动代码。这很奇怪。

  3. 无论如何,放置基于方向的图标的最佳位置是什么?

3 个答案:

答案 0 :(得分:5)

方法的唯一目的

-(BOOL) shouldautorotatetointerfaceorientation

是确定支持哪些方向。

如果您希望对旋转执行自定义操作,则需要实现一个或两个方法

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration

答案 1 :(得分:1)

您需要创建UIView的子类并覆盖-(void)layoutSubviews。更改方向或设置setNeedsToDisplay时,系统会调用此消息。您将获得动画更改子视图的位置。
[[UIApplication sharedApplication] statusBarOrientation]

的方式轻松获取当前方向

答案 2 :(得分:0)

<强> UIDevice.orientation;

但是,您仍应正确实施来自用户轮换的通知。如果您想避免多次不必要地运行代码,只需记住最后一个方向,只有在代码发生变化时才执行代码。