Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 向下移动UITableViewCells_Ios_Uitableview - Fatal编程技术网

Ios 向下移动UITableViewCells

Ios 向下移动UITableViewCells,ios,uitableview,Ios,Uitableview,我有一个UITableView,里面是UIView和动态UITableViewCells。 UIView位于表的顶部,单元格位于其正下方 我的问题是,当我在按下某个按钮后放大UIView时,它与它下面的单元格重叠。由于单元格是动态的,我不知道如何访问单元格并将其原点.y向下移动。 此外,如果我有很多细胞,我真的不想一个一个地移动每个细胞 我试图查看UITableView的单元格是否有某种偏移参数,但没有找到任何类似的参数 通过故事板,当我在表格中放大UIView时,单元格会自动被推到其下方,但不

我有一个UITableView,里面是UIView和动态UITableViewCells。 UIView位于表的顶部,单元格位于其正下方

我的问题是,当我在按下某个按钮后放大UIView时,它与它下面的单元格重叠。由于单元格是动态的,我不知道如何访问单元格并将其原点.y向下移动。 此外,如果我有很多细胞,我真的不想一个一个地移动每个细胞

我试图查看UITableView的单元格是否有某种偏移参数,但没有找到任何类似的参数

通过故事板,当我在表格中放大UIView时,单元格会自动被推到其下方,但不幸的是,当我通过代码(按下按钮后)以编程方式放大UIView时,单元格会保持在原来的位置,不会移动

下面是一个说明正在发生什么的插图:


“我的自动布局”已关闭。

您不应以当前的方式将UIView放入UITableView中。在我看来,主要有两种方法:

1) 将
UITableView
添加到
UITableView
上方。你没有提到为什么它需要在里面

UIView *view = [[UIView alloc] init];
UITableView *tableView = [[UITableView alloc] init];

view.translateAutoResizingMaskIntoConstraints = NO;
tableView.translateAutoResizingMaskIntoConstraints = NO;

[self.view addSubview:view];
[self.view addSubview:tableView];

NSDictionary *viewsDictionary = @{@"view" : view, @"tableView" : tableView};

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[view]" options:kNilOptions metrics:nil viewDictionary:viewsDictionary];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view][tableView]|" options:NSLayoutFormatAlignAllLeading | NSLayoutFormatAlignAllTrailing metrics:nil viewDictionary:viewsDictionary];
2) 假设UIView绝对需要位于UITableView内部,最好的方法是使用contentOffset

CGSize innerViewSize = CGSizeMake(CGRectGetWidth(self.view.bounds), 200.0f);
UIView *innerView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, -innerViewSize.height, innerViewSize.width, innerViewSize.height)];
UITableView *tableView = [[UITableView alloc] initWithStyle:UITableViewStylePlain frame:self.view.bounds];
tableView.contentOffset = CGPointMake(0.0f, innerViewSize.height);

然后,无论何时需要增加内部视图的大小,都可以更改其y原点,并增加
contentOffset.y

这听起来像是希望自定义
UIView
通过在高度增加时上下移动单元格来表现为
UITableViewCell
。所以就这么做吧。创建一个自定义的
UITableViewCell
,其高度可以动态更改,并在顶部(或任何您需要的地方)渲染该单元格。

感谢Infinity,我将尝试此操作。我在里面需要UIView的原因是,视图和表中的单元格都将一起滚动。contentOffset没有完成这项工作。我想内容插图就是你的意思。在这个问题上,我会同意亚伦的回答,因为这似乎是最合理的。感谢您并向上投票。将此功能放入自定义单元格会更容易,因此,您的表只管理
UITableViewCell
对象的集合。通过这种方式,您可以增加/减少自定义表视图单元格的高度,而其他单元格应该响应,而无需编写大量代码来处理该问题。