0

我在它的所有区域都有一个UIViewController控股UITableView公司。在条形按钮上单击我正在尝试缩小并移动和缩小UITableView以腾出空间,UIView以便从屏幕顶部向下移动。

我附上你的项目项目

我设法很好地移动了红色视图,但是在移动和调整 UITableView 大小时遇到​​了问题。

这是我的导致问题的动画。

-(void)extendTableView
{
    if (searchPanel) {        
        objectsTableView.frame = CGRectMake(objectsTableView.frame.origin.x, 0, objectsTableView.frame.size.width, 100);
        CATransition *animation = [CATransition animation];
        [animation setDuration:0.5];
        [animation setType:kCATransitionPush];
        [animation setSubtype:kCATransitionFromTop];
        [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
        [animation setDelegate: self];
        [animation setValue:ANIMATION_EXTEND_TABLE_VIEW forKey:KEY_ANIMATION];
        [objectsTableView.layer addAnimation:animation forKey:ANIMATION_EXTEND_TABLE_VIEW];

    }

-(void)shrinkTableView
{
    if (searchPanel) {
        objectsTableView.frame = CGRectMake(objectsTableView.frame.origin.x, 100, objectsTableView.frame.size.width, 100);
        CATransition *animation = [CATransition animation];
        [animation setDuration:0.5];
        [animation setType:kCATransitionPush];
        [animation setSubtype:kCATransitionFromBottom];
        [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
        [animation setDelegate: self];
        [animation setValue:ANIMATION_SHRINK_TABLE_VIEW forKey:KEY_ANIMATION];
        [objectsTableView.layer  addAnimation:animation forKey:ANIMATION_SHRINK_TABLE_VIEW];
    }
}

实现这一目标的正确方法是什么?

4

1 回答 1

2

这很完美

   -(void)extendTableView
    {
        if (searchPanel) {
            CGRect screenRect = [[UIScreen mainScreen] bounds];
            [UIView beginAnimations:nil context:nil];
            [UIView setAnimationDuration:0.5];
            objectsTableView.frame = CGRectMake(0, 0, screenRect.size.width, screenRect.size.height);
            [UIView commitAnimations];
        }

    }

-(void)shrinkTableView
{
    if (searchPanel) {
        CGRect screenRect = [[UIScreen mainScreen] bounds];
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.5];
        objectsTableView.frame = CGRectMake(0, 100, screenRect.size.width, screenRect.size.height -100);
        [UIView commitAnimations];
    }
}
于 2013-07-11T06:56:05.740 回答