UITableView帧高度动画故障

diz*_*izy 18 iphone objective-c uitableview

如果我尝试设置a tableView(ex :)的帧高度的height -= 200动画,则在帧的平滑动画完成之前,最后200px中出现的单元格会突然消失.

为了确保我正在做的其他事情,我创建了一个新的基于视图的应用程序.在主要的viewController我创建我自己tableview足以pseudo rows填满整个屏幕.在选择一行时,我会做一个简单的高度动画.

最相关的代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.myTable = [[[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)] autorelease];
    myTable.delegate = self;
    myTable.dataSource = self;
    [self.view addSubview:myTable];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    CGRect frame = self.myTable.frame;
    frame.size.height = 200;
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDelay:.5f];
    [UIView setAnimationDuration:0.5f];
    self.myTable.frame = frame;
    [UIView commitAnimations];
}
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样,或者修复/解决方法可能是什么?

任何建议真的很感激.TIA!

ryy*_*yst 15

我不确定我是否有完全相同的问题,但使用了[UIView setAnimationBeginsFromCurrentState:YES];解决的(部分)故障(我的表格视图在动画帧高度变化时疯狂滑动).


Jon*_*nah 8

这里也有同样的问题.这就是我正在做的事情并且原点动画平滑,但是尺寸立即变化......很烦人.

    [UIView beginAnimations:@"HideTabbar" context:nil];
    [UIView setAnimationDuration:.3];
        self.tableView.frame = CGRectMake(0.0, 44.0, 320, 366);
    [UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)

更新:尝试在动画之前添加:

self.tableView.autoresizingMask = UIViewAutoresizingNone;
Run Code Online (Sandbox Code Playgroud)


小智 0

我在寻找调整 tableView 大小的正确方法时发现了您的问题。我认为你的问题在于你指定的动画UIView而不是UITableView. 我无法使用 或 复制您的问题UIViewUITableView但我使用的是SDK 3.1,这可能是自您发布帖子以来已修复的错误。我不确定,但我希望这有帮助!