gpt4 book ai didi

iphone - 当设备方向从纵向更改为横向时,使用新的 uiview 填充整个横向屏幕

转载 作者:行者123 更新时间:2023-11-29 04:36:29 25 4
gpt4 key购买 nike

所以我的 iPhone 应用程序当前有一个填充整个屏幕的 tabviewcontroller。该应用程序仅在纵向模式下运行。我的任务是检测设备方向的变化,一旦变为横向,就让一个新的 uiview 填充整个屏幕。

我已经使设备方向变化检测正常工作。一旦检测到方向变化,我就使用 NSNotificationCenter 成功调用辅助方法 deviceOrientationChanged。如果更改为横向模式,我会运行特定的代码块。

在这段代码中,我已经尝试了各种方法,但没有一个成功。简单地说 self.view = newViewThing;不起作用,因为状态栏仍然位于顶部,选项卡仍然位于底部。我还尝试将这个 newViewThing 作为 subview 添加到 UIWindow 中。这不起作用,因为虽然添加了 View ,但它的方向不正确。

问题是:一旦检测到设备方向变化,有没有办法加载全新的 uiview?预先感谢您。

最佳答案

是的,有一种方法可以加载新 View 。我在我的应用程序中这样做:

- (void)orientationChanged:(NSNotification *)notification
{
// We must add a delay here, otherwise we'll swap in the new view
// too quickly and we'll get an animation glitch
[self performSelector:@selector(updateLandscapeView) withObject:nil afterDelay:0];
}

- (void)updateLandscapeView
{
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
if (UIDeviceOrientationIsLandscape(deviceOrientation) && !isShowingLandscapeView)
{
[self presentModalViewController:self.landscapeView animated:YES];
isShowingLandscapeView = YES;
}
else if (deviceOrientation == UIDeviceOrientationPortrait && isShowingLandscapeView)
{
[self dismissModalViewControllerAnimated:YES];
isShowingLandscapeView = NO;
}
}

我还将此代码添加到 viewDidLoad 中:

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

此代码用于dealloc:

[[NSNotificationCenter defaultCenter] removeObserver:self];
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];

关于iphone - 当设备方向从纵向更改为横向时,使用新的 uiview 填充整个横向屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11007041/

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