【问题标题】:Detect the duration of the Orientation Change for a subclass? iOS7检测子类的方向变化的持续时间? IOS 7
【发布时间】:2023-06-30 11:54:01
【问题描述】:

我正在创建一个 UIScrollView 子类,它需要在设备方向改变时运行动画。为了做到这一点,我需要知道方向变化的确切持续时间。在视图控制器中,我会使用这个:

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    NSLog(@"%f", duration);
}

由于这是在子类中,我需要改用以下代码:

    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(orientationChanged:)
                                                 name:UIDeviceOrientationDidChangeNotification
                                               object:nil];

然后调用选择器:

-(void)orientationChanged:(id)selector
{
    NSLog(@"Orientation has changed");
}

唯一的问题是它没有告诉我设备方向的持续时间。有谁知道怎么获得吗?

【问题讨论】:

    标签: ios ios7 uiinterfaceorientation nsnotificationcenter


    【解决方案1】:

    您要查找的属性是 UIApplication 的 statusBarOrientationAnimationDuration。这是 90° 旋转 - 如果您正在处理 180° 旋转,请加倍。

    【讨论】: