更改UITableView框架时出现奇怪的UITableViewCell动画

时间:2012-01-21 20:26:50

标签: ios cocoa-touch uitableview uikit

我有一个我正在研究的iPhone应用程序,它的工作方式很像sms.app。基本上,当您单击键盘时,tableView会在显示键盘时缩小以适应。当你点击它时,它会隐藏,TableView会回到原来的高度。

我的问题是,当我将UITableView帧更改回原始大小时,未显示的单元格现在在显示之前有一个奇怪的动画。我可以主要讲述因为图像。他们从中心开始大,然后调整到他们应该的位置。这是UITableView中的设置吗?或者只是我的代码?

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

// InitWithStyle
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];

cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.backgroundColor = [UIColor clearColor];
cell.contentView.backgroundColor = [UIColor clearColor];

// Add subviews here! EX:
// [[cell contenView] addSubview:theObject];

}

1 个答案:

答案 0 :(得分:0)

您将UITableView样式设置为两次,分别为两种不同的样式,

默认:

 cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

和副标题:

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];`

将此处设置为您想要的任何样式并删除其他样式。

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

所以发生的事情是你在需要时创建一个新的单元格,然后创建另一个不同风格的单元格。