我希望允许用户在应用程序中的几个调色板之间切换,IE如何使用XCode和其他文本编辑器在浅色和深色背景之间切换。我能够完成所有这些,但现在我正在尝试将更改包装在一个简单的动画块中,以便颜色变化淡入。除了我的表视图单元格外,一切都很好。颜色会发生变化,但它们不会生成动画。
[UIView animateWithDuration:0.5 animations:^{
self.tableView.backgroundColor = [UIColor whiteColor];
for (UITableViewCell *cell in self.tableView.visibleCells)
{
cell.textLabel.textColor = [UIColor blueColor];
}
}];
我试图不重新加载整个表格,因为这将导致很多事情再次布局,我不想要。坦率地说,我已经尝试了几次,但无论如何都不行。
对于它的价值,我的UITableView被分组,但我认为这并没有真正影响我的解决方案。
这里列出的答案很有意思,但我不认为与我的问题有关 - 我正在改变从不动画的文字颜色:Animating UITableViewCell's backgroundColor in block animation
答案 0 :(得分:0)
问题是文本属性不可动画。为了给您的更改添加动画效果,我建议您在表格单元格contentView
中添加自定义视图,而不是使用视图过渡动画来交换旧视图(使用新颜色设置)。这意味着为您放入contentView
的视图做自己的布局,因为您不再使用其中一种预定义的样式。
答案 1 :(得分:0)
谢谢你们,@ shadowhorst链接真的很有帮助。通过使用交叉溶解转换而不是animateWithDuration方法,我能够完成我想要的任务。代码如下 -
[UIView transitionWithView:self.tableView
duration:0.25
options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowAnimatedContent
animations:^{
self.tableView.backgroundColor = [UIColor whiteColor];;
for (UITableViewCell *cell in self.tableView.visibleCells)
{
cell.textLabel.textColor = [UIColor blueColor];
}
}
completion:nil];
我注意到我的分组单元格的边缘周围仍然存在一些瑕疵,这就是我将动画的持续时间缩短到四分之一秒的原因。