我正在创建一个应用程序,我根据用户是否在纵向和横向模式下移动iphone来更改按钮布局。我认为放置代码的最佳位置是
-(BOOL) shouldautorotatetointerfaceorientation
但是有两个主要问题
当页面加载时,应该至少调用3次调用tointerfaceorientation。我只想执行一次代码。
即使我使用Modal segue从viewController1(page1)移动到viewController2(page2)并且我在第2页上旋转我的iphone,它仍然会调用我的viewcontroller1中的自动代码。这很奇怪。
无论如何,放置基于方向的图标的最佳位置是什么?
答案 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;
强>
但是,您仍应正确实施来自用户轮换的通知。如果您想避免多次不必要地运行代码,只需记住最后一个方向,只有在代码发生变化时才执行代码。