gpt4 book ai didi

ios - 强制 ui 导航 Controller 仅纵向

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

我在 viewWillAppear 中有以下代码:

 if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft || [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight){

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
UIViewController *mVC = [[UIViewController alloc] init];
[self.navigationController presentModalViewController:mVC animated:NO];
[self.navigationController dismissModalViewControllerAnimated:NO ];
mVC=nil;
}

问题是,xib 底部的方法没有被触发。我注意到的是 AppDelegate 方法:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//some code
}

被解雇了。如何解决?

最佳答案

我遇到了同样的问题并搜索了很多页面,关于如何将 View 框架和导航栏移回预期位置有很多想法。虽然我认为 UIKit 设计不应该期望这样。

我在这里发现@Romain 的有趣评论覆盖了与方向相关的内容,我认为这应该是可能的,因为在 iPhone 上导航栏的高度默认为 64 纵向,而旋转到横向时为 44 和在这种情况下,状态栏是隐藏的。我就是这样。

这意味着某些情况导致导航栏处理隐藏状态栏的横向情况,但实际上并非如此,UIKit 的设计不够健壮,无法在您错误地覆盖方向方法时使其正确。

我的over lapped错误代码如下。1.扩展导航

@implementation UINavigationController(shouldAutorotate)

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

- (BOOL)shouldAutorotate
{
return self.topViewController.shouldAutorotate;
}

- (NSUInteger)supportedInterfaceOrientations
{
return self.topViewController.supportedInterfaceOrientations;
}

@end

2。重写 ViewController 中的方向方法

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationPortrait;
}

代码导致了重叠的问题,我按照如下重新组织后,它可以正常工作。1.扩展导航 Controller

@implementation UINavigationController(shouldAutorotate)

- (BOOL)shouldAutorotate
{
return self.topViewController.shouldAutorotate;
}

- (NSUInteger)supportedInterfaceOrientations
{
return self.topViewController.supportedInterfaceOrientations;
}

@end

2。如果需要将方向固定为纵向,请重写 View Controller 的方法。

- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}

我测试的环境是iOS8.1.2。把它贴在这里是因为我冲浪了几个小时,没能找到一个好的解决方案,但有很多解决方法,感谢 Romain 给出了正确的方向。

关于ios - 强制 ui 导航 Controller 仅纵向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22176158/

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