UIViewController:识别方向正在进行中

发布于 2024-11-29 17:40:10 字数 554 浏览 0 评论 0原文

我正在开发 iPhone 应用程序。 UIViewController 中是否有任何默认状态/访问器可以告诉方向是否正在进行中?

目前我已经完成了以下操作:

UIViewController 子类中的 BOOL 成员说 isOrientationChangeInProgress

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
isOrientationChangeInProgress = YES;
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
isOrientationChangeInProgress = NO;
}

有没有更好的方法?

I'm developing an iPhone application. Is there any default state/accessor in UIViewController that tells if orientation is in progress?

Currently I have done the following:

A BOOL member in subclass of UIViewController say isOrientationChangeInProgress

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
isOrientationChangeInProgress = YES;
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
isOrientationChangeInProgress = NO;
}

Is there any better way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一曲琵琶半遮面シ 2024-12-06 17:40:10

Apple 建议在 willRotateToInterfaceOrientation:duration: 中启动任何动画,因此在调用该方法后不久就会发生旋转。 uration 属性告诉您旋转完成后调用 didRotateFromInterfaceOrientation: 需要多长时间,或者大约持续时间秒后。

所以,我认为事后看来,你的 BOOL 是最好的选择。我不明白为什么你需要知道这一点;也许你想要的结果可以通过不同的方式实现。你想做什么?

Apple advises starting any animations in willRotateToInterfaceOrientation:duration:, so he rotation happens soon after that method is called. The duration property tells you how long it takes didRotateFromInterfaceOrientation: is called once the rotation is finished, or about duration seconds later.

So, I suppose your BOOL is the best thing to to do in hindsight. I don't understand why you need to know this though; maybe your desired outcome can be achieved a different way. What are you trying to do?

酒废 2024-12-06 17:40:10

您也可以要求告知设备方向信息:然后

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

您会在orientationChanged:发生更改时被告知

You can ask to be told device orientation information as well:

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

You then get told in orientationChanged: when the change happens

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文