相关疑难解决方法(0)

在 - [CALayer setNeedsDisplayInRect:]中禁用隐式动画

我的-drawInContext:方法中有一个包含一些复杂绘图代码的图层.我正在尝试最小化我需要做的绘图量,所以我使用-setNeedsDisplayInRect:仅更新已更改的部分.这是非常好的工作.但是,当图形系统更新我的图层时,它会使用交叉淡入淡出从旧图像过渡到新图像.我希望它能立即切换.

我已经尝试使用CATransaction来关闭操作并将持续时间设置为零,并且都不起作用.这是我正在使用的代码:

[CATransaction begin];
[CATransaction setDisableActions: YES];
[self setNeedsDisplayInRect: rect];
[CATransaction commit];
Run Code Online (Sandbox Code Playgroud)

我应该使用不同的CATransaction方法(我也尝试过-setValue:forKey:使用kCATransactionDisableActions,结果相同).

iphone core-animation calayer ios

133
推荐指数
9
解决办法
5万
查看次数

立即更新CALayer子图层

我有UIView,它具有以下结构:

UIView
  |- layer (CALayer)
    |- depthLayer (CALayer)
    |- bodyLayer (CALayer)
Run Code Online (Sandbox Code Playgroud)

对于图层 I,设置needsDisplayOnBoundsChange = true.当我更改UIView的大小时,图层会立即重绘.但他们的子层更新有一些延迟(在下一次绘制迭代).如何使用子层depthLayerbodyLayer同步绘制图层

UIView的:

override func drawRect(rect: CGRect) {
    bodyLayer.frame = rect
    depthLayer.frame = CGRectOffset(rect, 0, 5)
}
Run Code Online (Sandbox Code Playgroud)

calayer ios swift

2
推荐指数
1
解决办法
2624
查看次数

标签 统计

calayer ×2

ios ×2

core-animation ×1

iphone ×1

swift ×1