gpt4 book ai didi

ios - 验证后 willSelectRowAtIndexPath 中的动画

转载 作者:可可西里 更新时间:2023-11-01 04:41:16 26 4
gpt4 key购买 nike

我有一个 TableView 委托(delegate),它检查是否可以选择特定的单元格。如果不是,则中止选择。为了给用户一个视觉反馈,我想将这个单元格的标签染成红色,并在短时间后将其染回黑色:

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (true) { // Some simplification
MyTableViewCell cell = ... // The correct cell is loaded here
[UIView animateWithDuration:0.5 animations:^{
cellToSelect.labelAmount.textColor = [UIColor redColor];
} completion:^(BOOL finished) {
[UIView animateWithDuration:1.0 animations:^{
cellToSelect.labelAmount.textColor = [UIColor blackColor];
}];
}];
return nil;
}
return indexPath;
}

不执行动画。相反,单元格只是(视觉上)取消选择。

编辑:我刚刚尝试了建议的解决方案,但似乎都没有用。所以我进一步挖掘了一下,发现我可以制作动画,但无法更改单元格内任何标签的 textColor:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyTableViewCell cell = ...
cell.labelAmount.textColor = [UIColor redColor];
// Now, although the property was set (as I can see in the debugger)
// the label is still drawn with standard black text.
}

此外,通过彩色属性字符串设置颜色也不起作用。

另一方面,相应地呈现了 highlightedTextColor 的变化。所以这有效。

最佳答案

此属性 - textColor - 不可设置动画。使用 transitionWithView:duration:options:animations:completion:

[UIView transitionWithView:label duration:0.5 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
label.textColor = [UIColor redColor];
} completion:^(BOOL finished) {
[UIView transitionWithView:label duration:1.0 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
label.textColor = [UIColor blackColor];
} completion:nil];
}];

关于ios - 验证后 willSelectRowAtIndexPath 中的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29898376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com