我是ios的新手,我有以下问题。
我希望根据表视图中的元素数增加和减少tableview的大小。如果在输入处客户端在输出处给出3个或多于3个元素,我希望看到比默认值大2行的tableview。当输出的元素数量为2或1时,我将看到默认的表格视图高度。宽度将是相同的。怎么做?
这是我的代码:
if (inputList.count>2)
{
CGRect bounds = [self.tableView bounds];
[self.tableView setBounds:CGRectMake(bounds.origin.x,
bounds.origin.y,
bounds.size.width,
bounds.size.height + 50)];
CGRect tableFrame = [ self.predictiveDialog frame];
tableFrame.size.height=75;
[self.tableView setFrame:tableFrame];
}
else
{
NSLog(@"decrease size");
[self.tableView setBounds:CGRectMake(bounds.origin.x,
bounds.origin.y,
bounds.size.width,
bounds.size.height - 50)];
CGRect tableFrame = [ self.predictiveDialog frame];
tableFrame.size.height=44;
[self.tableView setFrame:tableFrame];
}
在这种情况下,当输入元素进入时,tableview宽度正常并且高度正常,但是根据inputlist中的元素的数量 - tableview在ios屏幕上上下移动。为什么呢?
答案 0 :(得分:1)
为什么不在cellForRowAtIndexPath:(NSIndexPath *)indexPath
委托方法中设置界限
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if([indexPath row]>2)
{
[tableView setBounds:CGRectMake(self.tableView.frame.origin.x,
self.tableView.frame.origin.y,
self.tableView.frame.size.width,
self.tableView.frame.size.height + 50)];
}
// your other code
}
希望这会对你有所帮助。希望我能正确理解你的问题。
答案 1 :(得分:0)
试试这个,
CGFloat height = self.tableView.rowHeight;
height *= inputList.count;
CGRect tableFrame = self.tableView.frame;
tableFrame.size.height = height;
self.tableView.frame = tableFrame;
答案 2 :(得分:0)
CGRect bounds = [self.tableView bounds];
[self.tableView setBounds:CGRectMake(...)];
CGRect tableFrame = [ self.predictiveDialog frame];
tableFrame.size.height=75;
[self.tableView setFrame:tableFrame];
代码[self.tableView setBounds:CGRectMake(...)]
在这里没用,因为你最终设置了tableView的框架。
为避免tableView移动,您可以使用tableFrame.origin.y = self.tableView.frame.origin.y
。