UITableView出现动画(从角落扩展)

时间:2011-07-26 13:26:50

标签: objective-c animation

我无法从角落扩展UITable。

这就是我的所作所为:

 tableAccounts = [[UITableView alloc] initWithFrame:CGRectMake(0, 71, 0,0)];
        [self.view addSubview:tableAccounts];


        [UIView beginAnimations:@"tableAppearing" context:nil];
        [UIView setAnimationDuration:3.0f];
        [UIView setAnimationCurve:UIViewAnimationCurveLinear];

        tableAccounts.frame = CGRectMake(0, 71, 320, 332);
        tableAccounts.backgroundColor = [UIColor redColor];

        [UIView commitAnimations];

我可以看到左上角出现的表格,但没有展开!我的意思是表格永远不会改变它的大小,它总是大小相同而且它正在出现。 我想要相同的效果,但从一张小桌子开始,然后变得更大。

有可能吗?

1 个答案:

答案 0 :(得分:2)

您应该可以通过将缩放变换应用于tableview并从角落移动来实现。以下内容应从右下角开始。

CGRect frame = self.view.frame;
int width = CGRectGetWidth(frame);
int height = CGRectGetHeight(frame);

// Make the frame the size you want in the end and place it centered on the corner.
CGRect startTvFrame = CGRectMake(width / 2, height / 2, width, height);
UITableView *tableView = [[UITableView alloc]initWithFrame:startTvFrame];

// Scale the view so that it starts out small
CGAffineTransform t = CGAffineTransformMakeScale(.001, .001);
tableView.transform = t;

[self.view addSubview:tableView];

// Animations
[UIView animateWithDuration:3.0f 
                      delay:0.0f 
                    options:UIViewAnimationCurveLinear 
                 animations:^{
                     // Reset the scale
                     tableView.transform = CGAffineTransformMakeScale(1, 1);

                     // Position the tableview
                     CGRect tvFrame = tableView.frame;
                     tvFrame.origin.x = 0;
                     tvFrame.origin.y = 0;
                     tableView.frame = tvFrame;
                 }
                 completion:nil];

[tableView release];