gpt4 book ai didi

ios - View 框架变化对 subview 的影响

转载 作者:行者123 更新时间:2023-11-28 13:50:38 25 4
gpt4 key购买 nike

我应该知道这一点,但不知道,也无法在任何地方找到它的解释。

我正在窗口的坐标空间中移动一个 UIView 并且希望在代码中添加它的 subview (一个 tableView)也能移动。我没有添加任何明确的约束将 subview 链接到它的父 View ,认为它们会协同移动。然而,据我所知,当我移动父 View 时, TableView 没有移动。

在代码中创建的 subview 不受更改其父 View 坐标的影响是否正常?如果是这样,您是否必须在代码中添加约束,是否应该在移动父 View 的同时手动移动 subview ,或者如何让 subview 同时移动?这是代码:

//Create view and subview (tableView):
myView= [UIView new];
CGFloat width = self.view.frame.size.width;
CGFloat height=self.tableView.frame.size.height;
//Place offscreen
[myView setFrame:CGRectMake(-width, 0, width, height)];
[self.view addSubview:myView];

aTableView = [UITableView new];
//Initially set frame to superview
aTableView.frame = myView.frame;
[myView addSubview:aTableView];

//Move superview on screen

myRect = CGRectMake(0,0,width,height)];
myView.frame = myRect;

myView 移动但 Tableview 似乎并没有单独移动。我怎样才能移动它?

最佳答案

我假设您说 “myView 移动但 Tableview 似乎没有移动” 是因为您没有在屏幕上看到 Tableview?如果是这样,这似乎是由于您设置框架的方式所致。

//Create view and subview (tableView):
myView= [UIView new];
CGFloat width = self.view.frame.size.width;
CGFloat height=self.tableView.frame.size.height;

//Place offscreen
[myView setFrame:CGRectMake(-width, 0, width, height)];
[self.view addSubview:myView];

好的 - myView 现在在屏幕左侧。假设宽度为 320,高度为 480,那么您的 myView 的框架是(例如):

`-320, 0, 320, 480`

然后

 aTableView = [UITableView new];
//Initially set frame to superview
aTableView.frame = myView.frame;
[myView addSubview:aTableView];

糟糕,你设置了 aTableView.frame = myView.frame; 这意味着你的表格框架是:

`-320, 0, 320, 480`

但是那是相对于 myView 的框架。因此,您的 TableView 位于 myView 左侧的 320-ptd,它位于屏幕左边缘的左侧 640-pts

//Move superview on screen

myRect = CGRectMake(0,0,width,height)];
myView.frame = myRect;

现在您已将 myView 的左侧移动到 0,因此它是可见的,但是 aTableView 仍然是 320-pts myView,所以它仍然在屏幕外。

将这一行更改为:

aTableView.frame = myView.bounds

应该照顾它。

关于ios - View 框架变化对 subview 的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54676806/

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