gpt4 book ai didi

ios - UIViewController 方法 viewDidLoad/viewWillHappen - View 帧大小检测

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

我编写了一些代码,将图像应用于 UIViewController 的 View 。该代码应该与 iPhone 屏幕尺寸无关,因为 iPhone 4 和 5 之间的高度差异。

      self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight;
self.view.clipsToBounds = YES;
UIGraphicsBeginImageContext(self.view.frame.size);
[[UIImage imageNamed:@"myimage.png"] drawInRect:self.view.bounds];


UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIView *imageView = [[UIView alloc] initWithFrame:CGRectMake(0,0, self.view.frame.size.width, self.view.frame.size.height)];
imageView.backgroundColor = [UIColor colorWithPatternImage:image];
[self.view addSubview: imageView];

image = nil;
imageView = nil;

我发现当我将这段代码添加到viewDidLoad方法中时,代码无法检测到不同的窗口大小。但是,当我将其放入 viewWillAppear 中时,代码可以在两种屏幕尺寸下正确工作。我不明白为什么。

有人知道为什么会发生这种情况吗?我想了解一下。

谢谢

最佳答案

发生这种情况是因为在加载 View 时,其内容不一定已布局且大小未知。使用自动布局系统时尤其如此。基本步骤是,

  1. View 已加载
  2. 系统使用您在 Storyboard或代码中给出的约束来布局 View
  3. View 出现

因此最合适的放置位置似乎是 viewDidLayoutSubviews。此时, View 及其 subview 已经布局完毕,并且尺寸也已确定。但是将其放入 viewWillAppear(或 viewDidAppear,就此而言)是可行的,尽管不太正确。

关于ios - UIViewController 方法 viewDidLoad/viewWillHappen - View 帧大小检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20314903/

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