gpt4 book ai didi

ios - Objective-C - 当我添加一个 subview 时,我的 subview 在底部离开屏幕。对框架的误解?

转载 作者:行者123 更新时间:2023-11-28 19:58:54 24 4
gpt4 key购买 nike

我在练习 objective-C,我尝试以编程方式完成所有事情。

我正在创建一个添加到我的 ViewController View 中的简单 View ,但是这个 subview 超出了屏幕。当我设置我的框架时,X 和 Y 的位置得到尊重,但其余的,没有...

这是我的结果截图: enter image description here

如您所见...红色 subview 超出屏幕。

这是我的 loadView我在其中添加该 subview :

HomeViewController.m - 加载 View

-(void)loadView
{
self.view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];

UIView *subview = [[UIView alloc] initWithFrame:CGRectMake(15, 15, self.view.frame.size.width - 30, self.view.frame.size.height - 30)];
[subview setBackgroundColor:[UIColor redColor]];
[self.view addSubview:subview];
}

对于填充,我确实在 x 位置输入了 15和 y ...对于框架,我确实用 self.view 的大小进行了计算通过删除填充...如您所见,它适用于 width , 但对于 height ,这是一个很大的失败。它超出了屏幕。

在我的 AppDelegate.h , 我设置了 navigationController.navigationBar.translucent = NO; ,为了当我为 x 设置位置时, 和 y , 它在 navigationBar 之后开始.

我不明白高度的这种奇怪行为...如果有人对此有很好的解释,请。

谢谢

最佳答案

首先,您不应该依赖viewDidLoadself.view 的值。稍后在 viewWillAppear: 中将其设置为正确的值。如果您在显示 self.view 时自动调整 subview 的大小,则可以保留您的代码。为此,在 subview 上设置 autoresizingMask:

subview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

(如果您使用自动布局,则添加一组等效的约束。)

此外,我建议使用 bounds 而不是 frame:

UIView *subview = [[UIView alloc] initWithFrame:CGRectMake(15, 15, self.view.bounds.size.width - 30, self.view.bounds.size.height - 30)];

这在这里没有什么不同,但它经常有,例如如果您根据父框架计算框架的 xy

关于ios - Objective-C - 当我添加一个 subview 时,我的 subview 在底部离开屏幕。对框架的误解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25069799/

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