gpt4 book ai didi

ios - 在自动旋转期间如何加载新的 NIB 文件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:15 24 4
gpt4 key购买 nike

Apple 的 NIB 本身不支持旋转,因此我尝试为同一 View 使用两个不同的 NIB - 每个方向一个。

我尝试了以下方法,它有效,除了......它破坏了一些 subview (例如 Apple 的 OpenGL/GLKit View )。

它只会破坏第一个旋转 - 所有后续旋转都完全按预期工作。所以,我假设在 Apple 的“viewWill/Did”调用堆栈中有一个我在这里遗漏的微妙之处。问题是,我一直没能找到关于这方面的真实文档——只是在 Apple 文档中到处模糊引用“一些”发生的调用,以及发生的时间/原因。

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
if( UIInterfaceOrientationIsLandscape( toInterfaceOrientation) )
{
[[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@-landscape", NSStringFromClass([self class])] owner:self options:nil];

[self viewDidAppear:FALSE];
[self viewWillDisappear:FALSE];
[self viewDidReload];
[self viewWillAppear:FALSE];
[self viewDidAppear:FALSE];

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar-landscape"] forBarMetrics:UIBarMetricsDefault];
}
else
{
[[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@", NSStringFromClass([self class])] owner:self options:nil];

[self viewDidAppear:FALSE];
[self viewWillDisappear:FALSE];
[self viewDidReload];
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar-portrait"] forBarMetrics:UIBarMetricsDefault];
[self viewWillAppear:FALSE];
[self viewDidAppear:FALSE];
}

}

最佳答案

根据 Apple 的说法,在您的情况下,您不仅应该加载不同的 Nib ,还应该更改 View Controller :

If you want to present the same data differently based on whether a device is in a portrait or landscape orientation, the way to do so is using two separate view controllers.

阅读View Controller Programming Guide以了解具体情况。

希望这对您有所帮助!

关于ios - 在自动旋转期间如何加载新的 NIB 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13903184/

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