gpt4 book ai didi

IOS 6 View Controller 不正确的宽度/边界 - 横向模式

转载 作者:搜寻专家 更新时间:2023-10-30 20:18:39 25 4
gpt4 key购买 nike

我的应用同时使用横向模式和纵向模式,用户可以随意在两者之间切换。

当 View Controller 由处于纵向方向的父 View Controller 呈现时,打开的 View Controller 将具有正确的宽度和框架

但是,如果父 View Controller 处于横向模式,那么在 IOS6 上(它在 IOS7 上可以正常工作), subview Controller 将太大并且实际上呈现时也有点太短了。

请注意,这不是因为值报告不正确,因为 [[UIScreen mainScreen] bounds] 报告相同的值,而不 pipe Controller 加载的方向如何。

关于如何解决这个问题/为什么会发生这种情况的任何想法?关于如何强制 IOS6 版本表现得像 IOS7 现在 native 表现的任何想法?非常感谢!!!

编辑::以下是 vc 的呈现方式:

应用委托(delegate)

Launch1 *launch1 =[[Launch1 alloc] init];
self.window.rootViewController = launcher;
[self.window makeKeyAndVisible];

Launch1 类

Search *search = [[Search alloc] init];
[self presentViewController:search animated:YES completion:nil];

搜索类

//load list_container
views = [[Search_custom_views alloc] initWithControllerContext:self];
[self.view addSubview:views];

Search_custom_views UIView 扩展:

- (id)initWithControllerContext:(UIViewController*)contextstart {

//set size of the screen
CGRect screenRect = [[UIScreen mainScreen] bounds];

self = [super initWithFrame:screenRect];

if (self) {
....

最佳答案

所以这是一个艰难的过程。我以编程方式加载所有 View 。它们基本上是对应于每个 View Controller 的 UIView 子类。出于某种原因,当在横向模式下从父 View Controller 打开 IOS6 View Controller 时, subview Controller 的边界不会立即传递给子 vc 的 UIView 子类(如果您只是在 Controller 的 viewDidLoad 方法中使用 addSubview -那还不够)。 IOS7没有这个问题。

对我来说,IOS6 的修复是在 subview Controller 的 viewDidLoad 方法中执行以下操作:

//add view subclass to view controller
[self.view addSubview:views];

//reset bounds & refresh layout for IOS6
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 7) {
views.frame = self.view.bounds;
[views layoutIfNeeded];
}

关于IOS 6 View Controller 不正确的宽度/边界 - 横向模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19576253/

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