方向改变触发的方法

时间:2010-11-29 07:53:31

标签: iphone ios

这是一种在iOS设备方向发生变化时运行方法的方法吗?

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

我使用哪些代表等。

干杯 - 一个新手

6 个答案:

答案 0 :(得分:32)

取决于您想要做出反应:

如果在轮播之前,覆盖来自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

答案 1 :(得分:6)

UIDevice个帖子UIDeviceOrientationDidChangeNotification

UIApplication发布了UIApplicationWillChangeStatusBarOrientationNotificationUIApplicationDidChangeStatusBarOrientationNotification,并为每个帖子提供了相关的委托回调。

如果视图控制器是由窗口管理的控制器层次结构的一部分,

UIViewController会收到由UIDevice通知触发的多个与方向相关的调用。

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

答案 2 :(得分:0)

willRotateToInterfaceOrientation:是您可能正在查看的方法。阅读那篇文章。

答案 3 :(得分:0)

答案 4 :(得分:0)

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

解决方案很简单:

接口(h文件)中的

BOOL rotated;
实现中的

(m文件):

  1. 重写

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {     返回旋转; }

  2. 2调用[自我设置]

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

答案 5 :(得分:0)

只需使用此代码段检查方向更改。

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