gpt4 book ai didi

iphone - setSelected 上的自定义 UITableViewCell 和动画 :animated:

转载 作者:可可西里 更新时间:2023-11-01 17:12:09 25 4
gpt4 key购买 nike

我有一个 UITableViewCell 子类,它在 drawRect: 方法中进行绘图。整个矩形都是自定义绘制的,包括背景。我能够获得非常复杂的单元格,同时保持滚动非常流畅。

我的问题:每当 View 出现时,我都会调用 [table deselectRowAtIndexPath:path animated:YES];,以符合 Apple 的 HIG。但是,没有动画出现。当然,当我有一个透明的自定义 View (用 subview 创建)时它起作用了(所以 Apple 的背景会出现在下面)。现在不是了。

我的 drawRect: 在“动画时间”期间被调用一次,大约在中途。我认为发生这种情况是因为它使单元格的突出显示属性从 1 变为 0 并在低于 0.5 时捕捉到 0。

我怎样才能使这个过渡动画化?我的猜测是使用通常的 beginAnimations: 等,并在我的单元格对象中从 1 到 0 动画自定义浮点字段。这会重复调用 drawRect: 来制作动画吗?

更新我设法使它几乎可以正常工作。我已经重写了 setSelected:animated: 像这样:

- (void) setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:NO];

if (animated) {
[CATransaction begin];
CATransition* animation = [CATransition animation];
animation.type = kCATransitionFade;
animation.duration = 0.6;
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[view.layer addAnimation:animation forKey:@"deselectRow"];
[CATransaction commit];
}
}

如果表格 View 在屏幕上,这将非常有效。但是,如果我从导航(返回)返回到 TableView ,它不会从选中淡化为未选中,而是从不可见淡化为未选中。什么会导致这种情况?

最佳答案

回答有点晚,但可能对您和其他人仍然有用。您需要做的是在向 super 发送消息之前分配您的自定义选定 View ,如下所示:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
UIView *view = [[UIView alloc] initWithFrame:self.frame];
view.backgroundColor = [UIColor colorWithRed:.9 green:.0 blue:.125 alpha:1.0];

self.selectedBackgroundView = view;

[super setSelected:selected animated:animated];
}

关于iphone - setSelected 上的自定义 UITableViewCell 和动画 :animated:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3982942/

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