方向改变引发的方法

在iOS设备方向改变的时候,这里是一种运行方法吗?

我想只改变屏幕上的一些对象的方向,而不是其他的。

我使用什么代表

干杯 – 一个新手

取决于你想要做出什么反应:

如果在旋转之前,从UIViewController 覆盖

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { // do something before rotation } 

如果你想在旋转后执行某些操作:

 - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { // do something after rotation } 

参考:

http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/willRotateToInterfaceOrientation:duration

UIDeviceOrientationDidChangeNotification

UIApplication发布了UIApplicationWillChangeStatusBarOrientationNotificationUIApplicationDidChangeStatusBarOrientationNotification并且每个都有一个相关的委托callback。

如果视图控制器是由窗口pipe理的控制器层次结构的一部分,则UIViewController接收由UIDevice通知触发的多个定向相关调用。

如果您已经在使用UIViewController,请实现一些方向相关的方法,否则注册UIDevice通知。 最重要的UIViewController方法是shouldAutorotateToInterfaceOrientation因为如果返回NO ,其他的不被调用。

willRotateToInterfaceOrientation:是您可能正在查看的方法。 阅读那一个。

UIViewController被发送willRotateToInterfaceOrientation:duration:在旋转之前,和didRotateFromInterfaceOrientation:旋转之后。

要configuration其他animation,请使用willAnimateRotationToInterfaceOrientation:duration: or willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:didAnimateFirstHalfOfRotationToInterfaceOrientation: and willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration: 后者用于两步animation,当您将页眉或页脚视图移出主屏幕时,通常会使用这两个animation。

我的沙盒应用程序: https : //github.com/comonitos/programatical_device_orientation

解决scheme很简单:

在接口(h文件)中:

 BOOL rotated; 

在执行(m文件):

  1. 改写

    – (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {return rotated; }

2调用[自设置]

 -(void) setup { rotated = YES; [[UIDevice currentDevice] setOrientation:UIDeviceOrientationLandscapeLeft]; rotated = NO; } 

只要使用这个代码片段来检查方向的变化。

 override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { if UIDevice.currentDevice().orientation.isLandscape.boolValue { print("Landscape") } else { print("Portrait") } }