gpt4 book ai didi

UITableViewCell 内带有 CATransform3D 的 UIView = 断断续续的滚动

转载 作者:行者123 更新时间:2023-12-02 06:37:46 26 4
gpt4 key购买 nike

我正在使用一个自定义的UITableViewCell,我在其中放置了一个子类UIView(当然,在contentView内)。相关的 UIView 显示一个方向箭头和两行支持文本。

箭头通过具有背景颜色和箭头形状蒙版的图层来显示。根据箭头指向的方向,背景颜色会更改为两种可能性之一。

每当需要更新箭头时, View 都会收到NSNotification(基于当前标题,但不完全相同 - 每个单元格和 View 都不同)。当收到通知时, View 调用私有(private)方法来执行转换。这将为箭头层设置动画,有效地将其绕其中心旋转到新方向,如下所示:

    // Update layer BG color, then ...

[UIView setAnimationBeginsFromCurrentState:YES];
CATransform3D transform = CATransform3DMakeRotation(DegreesToRadians(locationDirection), 0, 0, 1);
_arrowLayer.transform = transform;

(注意:_arrowLayer 仅供内部使用,不通过属性公开。)

UIView 上还有一个属性,用于设置用于创建支持文本的信息。更改后,将调用 setNeedsDisplaydrawRect: 方法进行计算并绘制结果文本。

这一切都很好。但是,我遇到了一个主要问题:

在滚动表格 View 的同时,箭头会产生动画效果,导致一些大联盟的滚动不稳定,通常会导致滚动停止!即使这是 contentView 中的唯一 View (以最小测试用例的名义),也没关系。

如果设备未移动,滚动效果还算可以接受,但仍有待改进。

我希望我只是犯了一个根本性错误(不要使用drawRect:?以其他方式进行转换?以上都不是?)

预先感谢您提供任何线索/建议!

更新2011年10月4日:我尝试让UITableViewController观看UIScrollViewDelegate(根据UIScrollView编程指南)当滚动开始/停止时,每个方向箭头 View 都会询问其委托(delegate)(本例中为 Table VC)是否可以设置动画。但这也没有多大帮助。如果动画正在进行中,我们就不走运了。也许 NSNotification 是有序的,方向箭头 View 寻找特定的通知。 (但这听起来有点倒退,不是吗?给其他对象一个他们可以发送的通知?嗯。)

最佳答案

尝试这样的事情:

self.layer.shouldRasterize = YES;

我不确定哪个图层(或哪些图层)应该设置此属性,但我经常遇到动画不稳定的问题,通过设置 shouldRasterize 可以解决该问题。

关于UITableViewCell 内带有 CATransform3D 的 UIView = 断断续续的滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7419985/

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