gpt4 book ai didi

ios - 加载后 View 框架发生变化

转载 作者:行者123 更新时间:2023-12-02 03:16:43 26 4
gpt4 key购买 nike

看来我可能误解了什么。我有一个全屏的 iPad 应用程序,没有状态栏或其他任何东西。它也始终处于横向模式,因此我无需担心纵向。我正在使用正确的框架以编程方式创建 View ,但是当 View 实际加载并显示时,框架似乎有所不同。

这是我用来生成 View 的代码(我在下面的 View 中添加了更多内容,但它们与我的问题无关):

- (void)loadView{
self.view = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 1024.0, 768.0)];

backgroundImage = [[UIImageView alloc] initWithFrame:self.view.bounds];
[backgroundImage setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
[self.view addSubview:backgroundImage];
}

在view确实出现时,我NSLog self.view的框架并得到{{-128, -128}, {1024, 768}}。尺寸是正确的,但原点已更改。为了看看会发生什么,我尝试用原点 128, 128 初始化 View - 这生成了一个 {{0, -256}, {1024, 768}} 的框架,我可以'也不解释。

谁能告诉我到底发生了什么?我尝试设置自动调整大小蒙版等,但它并没有真正改变任何东西。我有点卡住了。

最佳答案

所有UIViews的正确几何图形仅在viewWillAppear:方法中和之后可用。在此之前, View 层次结构的几何形状尚未设置,并且值不准确。如果您需要了解、更改、计算帧,则不应在 viewWillAppear: 方法之前执行此操作。
更新:
重写 -loadView 方法以使用 UIView 初始化 self.view。如果您使用 nib 文件,则会自动为您完成此操作,并且您不应覆盖此方法。真实 View 几何体在此方法中不可用。
-viewDidLoad 是设置 View 层次结构的位置。您通常会在此处初始化 subview 并将它们添加到 self.view 中。您可以执行一些较繁重的操作,只要它们不需要多线程即可。在此方法中, View 几何形状也不可用 - 自动调整大小 mask 在这里仍然不起作用,并且您不能依赖 frame 属性。
-viewWillAppear: 是正确设置所有内容、调整 View 大小的地方 - 如果您想计算和设置其他几何图形,请使用此方法,frame 属性正确。此处仅执行轻量级操作,因为此方法不应阻塞主线程,并且应尽可能快地执行。
viewDidAppear: 也是如此。

关于ios - 加载后 View 框架发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10954820/

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