gpt4 book ai didi

ios - 为什么 iOS 在 didReceiveMemoryWarning 释放后不自动旋转从 Nib 加载的 View ?

转载 作者:可可西里 更新时间:2023-11-01 04:40:37 25 4
gpt4 key购买 nike

My iPad app大量使用自转。这很棒。但是,我注意到,如果隐藏 View 被 didReceiveMemoryWarning 的默认实现释放(如 here 所述),当 View 从 Nib 重新加载时,我恰好在横向,它以纵向加载它。这对界面造成了严重破坏,直到我手动旋转 iPad 并强制它转到正确的方向。

我原以为 iOS 会以当前方向加载 View ;这就是它在应用程序启动时所做的事情。但它不是,不是在被 didReceiveMemoryWarning 卸载之后。为什么不?我怎样才能做到这一点?

最佳答案

答案,由于来自 dbarker 的指点而确定, 是 View Controller 的旋转方法,包括 -willRotateToInterfaceOrientation:duration:-willAnimateRotationToInterfaceOrientation:duration:,在默认实现后重新加载 View 时不会被调用didReceiveMemoryWarning 已卸载 View 。我不知道为什么它在应用程序启动时会有所不同,但我确实有一个解决方法

我所做的是在 didReceiveMemoryWarning 中将名为 unloadedByMemoryWarning 的 bool ivar 设置为 YES,如下所示:

- (void) didReceiveMemoryWarning {
unloadedByMemoryWarning = YES;
[super didReceiveMemoryWarning];
}

然后,在 viewDidLoad 中,如果该标志为真,我将其设置为 NO,然后自己调用旋转方法:

if (unloadedByMemoryWarning) {
unloadedByMemoryWarning = NO;
[self willRotateToInterfaceOrientation:self.interfaceOrientation duration:0];
[self willAnimateRotationToInterfaceOrientation:self.interfaceOrientation duration:0];
[self didRotateFromInterfaceOrientation:self.interfaceOrientation];
}

有点糟糕,我必须这样做,但它确实有效,现在我不太担心因为使用过多内存而被 iOS 杀死。

关于ios - 为什么 iOS 在 didReceiveMemoryWarning 释放后不自动旋转从 Nib 加载的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4655302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com