UITableView的setFrame每次都不起作用

时间:2013-01-25 01:14:53

标签: objective-c uitableview resize uianimation

我想通过按下iPad应用程序上的按钮来调整UITableView中的UIViewController包含的大小。目标是在后台查看其他UITableView。该按钮在类中设置了一个标志,并调用一个函数来根据标志调整表的大小。

我必须在按钮上单击三次才能启动表格的大小调整。调整大小在两次工作一次。

有人能帮助我吗?

这是我的代码:

- (void)displayTableView:(BOOL)animated
{
    CGFloat filterWidth = self.tableViewFilter.frame.size.width;
    CGFloat viewWidth = self.view.frame.size.width;

    CGFloat originx = self.showFilters == YES ? filterWidth : 0;
    CGFloat originy = 0;
    CGFloat width = self.showFilters == YES ? viewWidth - filterWidth : viewWidth;
    CGFloat height = self.view.frame.size.height;

    if (animated == YES) {
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.5];
    }

    [self.tableView setFrame:CGRectMake(originx, originy, width, height)];

    if (animated == YES) {
        [UIView commitAnimations];
    }
}

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

尝试像这样的UIView动画......

- (void)displayTableView:(BOOL)animated
{
    CGFloat filterWidth = self.tableViewFilter.frame.size.width;
    CGFloat viewWidth = self.view.frame.size.width;

    CGFloat originx = self.showFilters == YES ? filterWidth : 0;
    CGFloat originy = 0;
    CGFloat width = self.showFilters == YES ? viewWidth - filterWidth : viewWidth;
    CGFloat height = self.view.frame.size.height;

    if (animated == YES)
    {
         [UIView animateWithDuration:0.5 animations:^{
              [self.tableView setFrame:CGRectMake(originx, originy, width, height)];
         }];

    }
}