ios增加/减少tableview的大小

时间:2013-10-31 08:41:21

标签: ios objective-c tableview

我是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屏幕上上下移动。为什么呢?

3 个答案:

答案 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