iphone - 为什么CALayer的移动速度比UIView慢?

标签 iphone cocoa-touch uikit core-animation

我有一个 UIView 子类,当用户触摸“事件”时,它会使用以下重写方法来移动它们:

// In a custom UIView...

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    CGPoint point = [[touches anyObject] locationInView:self];
    UIView *eventView = [self.ringOfEvents hitTest:point withEvent:event];
    for (EventView *e in self.events) {
        if (e == eventView) {
            event.position = point;
        }
    }
}

为什么当我将 EventView 设为 CALayer 而不是 UIView 时,移动速度会变得缓慢?我也可以发布该代码,但它非常相似,我认为没有必要。

我认为抽象到较低级别会加快事件处理速度,但我一定错过了一些东西。

顺便说一句,如果 *eventViewUIViewCALayer 的子类,则 position 属性如下:

- (void)setPosition:(CGPoint)pos {
    self.layer.position = pos;
}

- (CGPoint)position {
    return self.layer.position;
}

不知道为什么使用 UIView 而不是 CALayer 时延迟会大幅减少..

最佳答案

默认情况下,大多数 CALayer 属性都会随动画而更改,因此延迟的减少可能就是由此引起的。

您可能希望在图层位置更改时禁用动画。例如,here 中讨论了可能的解决方案。和 here

关于iphone - 为什么CALayer的移动速度比UIView慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7750862/

相关文章:

ios - NSURLConnection 下载大型 zip 文件

uicollectionview - 如何在 Collection View 中手动选择下一个聚焦索引路径

ios - 如何在 sizeForItem 中获取自定义 Collection View 单元格

ios - 缺少 64 位支持, bundle 无效。提交应用程序时出错

ios - 我可以将 iOS 7 支持添加到仅作为 iOS 8 应用程序发布的应用程序吗

iphone - 使用MKMapView时如何设置精度和距离过滤器

iphone - 在 iPhone 上检索当前本地时间?

iphone - 如何创建发光字体?

iphone - 你如何勾勒出你的 iPhone 应用程序设计和想法?

uikit - AutomaticAdjustsScrollViewInsets 在 iOS9 中不起作用