【发布时间】:2009-10-13 06:25:16
【问题描述】:
编辑:我最初就一般视图调整大小提出了这个问题,但现在我意识到它是针对 tableViews 的更具体的问题。
假设一个 tableView 最初有一个 (0 0, 320 460) 的框架,即它填满了整个 iPhone 屏幕。为了调整 tableView 的高度并为调整大小设置动画,我将以下代码映射到一个按钮:
[UIView beginAnimations:@"Animation" context:nil];
[UIView setAnimationDuration:3];
CGRect rect = self.table.bounds;
rect.size = CGSizeMake(320, 200);
self.table.bounds = rect;
self.table.center = CGPointMake(160, 100);
[UIView commitAnimations];
此代码将动画表格的高度向下,但是......在任何动画发生之前,表格将剪掉所有不适合新边界的表格单元格。因此,给定一个最初适合 10 行的 tableView,上面的动画代码将导致以下事件序列:
- tableView 会立即删除底部的 5 行。请注意,它只删除了行 - tableView 的背景仍然延伸到底部。
- tableView 按预期动画显示表格其余部分的高度变化。
这不是我正在寻找的行为。 tableView 不应立即剪切底部 5 行,而应将其行保持在原位,而表格的底部边缘仅向上移动。
根据我看到的行为,似乎 tableView 在发现其边界将发生变化后立即收到某种消息来刷新其行。有人可以阐明这种行为以及如何避免这种行为吗?
【问题讨论】:
标签: objective-c cocoa-touch uitableview uikit core-animation