假设我已将UITableViewCell
子类化,并且我有一些观点(例如UILabel
)。
表格已呈现。 现在我想更改/动画该视图。
| | | |
|-----------------------| |-----------------------|
| label alpha=1.0 | animate | label alpha=0.5 |
|-----------------------| ===> |-----------------------|
| label alpha=1.0 | | label alpha=0.5 |
|-----------------------| |-----------------------|
| | | |
我认为cellForRowAtIndexPath
,willDisplayCell
,didEndDisplayingCell
现在不是好选择。
我在子类animateTest
中创建了一个方法UITableViewCell
,它改变了标签的样式 - 例如颜色或执行一些动画。
现在在视图控制器中渲染表我试图在tableview子视图上执行快速计算。
感谢枚举,我抓住了所有子类UITableViewCell
个实例,并使用了performSelector
来激活animateTest
方法。
但没有变化。即使做[tableview reloadData]
。
在呈现表格后,如何在表格单元格中设置动画?
(使用[UIView animateWithDuration.........]
)?
提前致谢。
答案 0 :(得分:2)
实际上由于错误的单元初始化没有发生任何事情。
我以前用以下方式初始化了单元格:
NSString *cellIdentifier = [NSString stringWithFormat:@"Cell%d", [indexPath section]];
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
NSArray *topLevelObjects;
topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
for(id currentObject in topLevelObjects)
{
if([currentObject isKindOfClass:[CustomCell class]])
{
cell = (CustomCell *)currentObject;
break;
}
}
现在我以这种方式初始化单元格:
static NSString *reuseIdentifier = @"Cell";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
if (cell == nil) {
cell = [[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil] objectAtIndex:0];
}
使用以下方法一切正常:
CustomCell *cell = (CustomCell*)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:3]];
[UIView animateWithDuration:2 animations:^{
cell.element.alpha = 0;
}];
如果有人能够解释第一种方式的错误,我将不胜感激。 我怀疑单元格在初始化时以某种方式重置,因此我的更改不可见,因为旧单元格(应用了动画)被丢弃并且单元格再次生成。
我前段时间从某个网站复制过片段,所以我习惯使用它,但显然这不是一个好的实现。