gpt4 book ai didi

ios - 为什么在与嵌入式 UITableView 交互后,我的 UIView 的框架会意外更改?

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

考虑以下 UIView“MainView”:

enter image description here

该 View 包括一个容器 View ,该 View 又包含一个 UITableView Controller 。容器 View 的 y 坐标从渐变条下方开始。 UITableView 在最底部包含带有“STU”标签和“图表”按钮的部分页脚。

UIView 加载时,以及与 tableView 的任何交互之前,MainView 的尺寸为:

Frame: 0.000000x, 0.000000y, 568.000000w, 268.000000h

我设置了一个委托(delegate)协议(protocol),这样点击 tableView 中的图表按钮将在 MainView 中创建一个新 View ,通过以下方法实现阴影效果:

CGRect newFrame = self.view.frame; // self = MainView
newFrame.size.width = 100;
newFrame.size.height = 50;
UIView *backgroundShadowView = [[UIView alloc] initWithFrame:newFrame];
backgroundShadowView.backgroundColor = [UIColor blackColor];
// Do Animation

上面的重要部分是'newFrame' CGRect。由于某种原因,在通过点击图表按钮,甚至滚动或点击一行与表格 View 交互后,self.view.frame 突然具有以下尺寸:

Frame: 0.000000x, 52.000000y, 568.000000w, 268.000000h

因此阴影 View 如下所示,y 原点比预期开始的位置更远,刚好在渐变条上方。

enter image description here

我已经为这个问题调整了“shadowview”的宽度和高度;通常它是 568x268,但由于这个问题,它会在屏幕底部扩展 52 个单位。

52 个单位正好是状态栏的高度 (20) + navigationbar_in_landscape (32)。

当然我可以手动调整框架尺寸,但我不想这样做。我想知道为什么 View 的框架会意外更改。

对于我的生活,我无法弄清楚为什么 View 会突然偏移。感谢您的帮助!!

最佳答案

两条评论。

(1)

这段代码可能总是错误的:

CGRect newFrame = self.view.frame; // self = MainView
newFrame.size.width = 100;
newFrame.size.height = 50;
UIView *backgroundShadowView = [[UIView alloc] initWithFrame:newFrame];

你肯定想根据 self.viewbounds 来定义 backgroundShadowView 的框架,而不是你正在做的框架在此处的第一行。

(2)

self.view.frame 中的更改可能是错觉。您可能最初在 viewDidLoad 中检查它。但这还为时过早;该 View 尚未添加到界面中,因此尚未调整其大小以适应周围环境。

关于ios - 为什么在与嵌入式 UITableView 交互后,我的 UIView 的框架会意外更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23641315/

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