问题标签 [cglayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
145 浏览

ios - 在drawRect中绘制大量路径

在视图的 drawRect 中渲染大量 < 512 的路径的最佳方法是什么?

我想实时绘制多达 512 个 2 像素宽的片段,但不确定如何以最高性能做到这一点。

创建和绘制所有这些段作为 BezierPath 或多个 bezierPaths 不够快。

我读过 CGLayers 可以使用并渲染到目标 UIView 中。

在从视图上下文设置图层并使用自己的上下文写入其他地方的图层之后,可以将图层绘制到视图中

如果图层中不断绘制某些内容,它应该何时使用 setNeedsDisplay 通知 UIView 并且它们可以保持同步?例如,没有将 setNeedsDisplay 分派到主线程(这感觉不对)。

进行此优化后,在图层中渲染如此多路径/线的最佳方法是什么?

0 投票
2 回答
2055 浏览

ios - 在突出显示时更改 UIButton BG 颜色,但保留图层角半径?

我正在UIButton通过这种类别方法更改 a 的背景颜色,使用 1px x 1px 图像:

但是,这会覆盖我的.layer.cornerRadius. 我需要一个带圆角的按钮,但也需要一个可以在突出显示时更改其背景颜色的按钮。

有什么办法吗?拐角半径需要是动态的。

0 投票
1 回答
8594 浏览

ios - Swift 中应该如何导入 QuartzCore.framework?

我需要 QuartzCore.framework 将边框颜色添加到文本字段,如何?

0 投票
2 回答
276 浏览

ios - 如何同时绘制到多个 CGLayer?

我想在同一个for循环中将对象绘制到两个单独的 CGLayer,但不确定如何执行此操作。

例如,我想在三个蓝色圆圈后面画三个橙色圆圈,橙色圆圈在一层,蓝色圆圈在另一层。以下代码会将每个圆圈放在前一个圆圈的顶部:

上面代码的输出

我将如何修改它以使三个橙色圆圈最终orangeLayer位于 a 中的三个蓝色圆圈后面blueLayer?我想这与保存和恢复上下文有关,但我无法真正理解它。

非常感谢!

PS:我意识到我可以简单地使用两个for循环内联来实现正确的效果,但这个例子是为了学习分层的教学目的。谢谢!

0 投票
0 回答
62 浏览

objective-c - 将 CGLayer 数组存储到文件中

我正在开发一个 OSX 应用程序,我需要存储 446 个放置在 PDF 上下文中的 CGLayer,我想知道是否有办法从文件中写入和读取它们,而不是在应用程序加载时生成它们

我读过CGLayer 不再被推荐,但我觉得它们真的很适合我的需要。此外,如果我使用 bitmapGraphicsContexts,它们会在放大时像素化。

我可以将它们存储在 NSArrays 中,既可以将它们存储在 NSValue 中,也可以通过bridging 将它们放入数组中。我也尝试将它们存储在 C 数组中,但没有成功。

尝试将这些数组存储在文件中时出现了我的问题。writeToFile: 不适用于 CGLayers,但 NSKeyedArchiver/NSKeyedUnarchiver 也不起作用,无论是在图层位于 NSValues 中还是桥接时。

这是我尝试从文件中写入和读取包含单个层的数组的方法。

我从中得到[NSKeyedArchiver encodeValueOfObjCType:at:]: unknown type encoding ('^')') was raised,很确定是因为 CGLayerRef 类型。

绘制我需要的不同注释所需的行很长,所以我一直试图找出一种方法来制作它们并将它们存储在一个文件中,而不必每次启动时都制作它们。到目前为止,我还没有看到一种方法来做到这一点,但希望这里的某个人可能知道一个并且会感谢任何帮助。

0 投票
4 回答
8378 浏览

iphone - AVPlayerLayer 不绑定到 UIView 框架

我正在尝试将 AVPlayerLayer 添加到 UIView

这是视频的容器(蓝色):

这是视图:

约束: 约束:

最后结果: 在此处输入图像描述

我不明白为什么视频不受 UIVIew 坐标的限制。如果我将它绑定到控制器的超级视图中,就可以了。

0 投票
1 回答
184 浏览

ios - 当 UIView 与另一个 iOS 重叠时如何显示它?

我正在尝试重新实现类似于 Apple Watch Friend Picker 的东西。我有两个 UIView,它们的角半径都是它们高度的一半,所以它们显示为圆形。我如何计算它们重叠的位置并仅显示该部分。我的 UI 在第一张图片中,第二张包含所需的行为。提前感谢您的帮助?当前用户界面苹果手表用户界面

0 投票
1 回答
267 浏览

ios - iOS:UIButton 边框颜色仅在 iphone6(s) 中看起来模糊/模糊

几天来,我一直在为这个问题挠头。

基本上,问题是:

我有一个方形按钮(宽度和高度相等),图像放置在此 UIButton 的 UIImageView 中。我想为这个按钮设置一个圆形边框。所以我以这种方式实现它:

好吧,边框是圆形的,但是在iphone6/iphone6s中显示时,边框看起来很模糊/模糊,底部边框甚至有点被切掉了。然而,在 iphone5s/iphone6 plus 中,边框看起来更好(虽然还是有点模糊)。所以我想知道是什么导致了这个问题?

这是它在 iphone 6 中的样子(左边的边框宽度为 0.5f,右边的为 1.f):

在此处输入图像描述

这是它在 iphone5s 中的样子(至少我还有底部边框):

在此处输入图像描述

非常感谢您!

0 投票
1 回答
28 浏览

macos - 是否有必要在 OSX 中序列化对 CGLayer 的读/写访问?

我的 Mac OSX 应用程序有一个后台进程,它使用 Core Graphics 将 2D 线条和区域绘制到CGLayer. 然后通过子类的displayRect()方法定期向用户显示NSView

目前我正在使用 GCD 队列来序列化读取和写入层的任务。这确保了后台进程永远不会在主线程使用CGContextDrawLayerAtPoint(). 但是,这会花费我一些性能。

问题1: R/W访问的序列化CGLayer对于应用程序的稳定性是否必要?(我不介意奇怪的错误显示图像,但我不想冒险崩溃)。

问题 2:如果我要将绘图任务拆分为多个并发进程,让它们同时写入图层是否安全,或者我是否需要将它们序列化(这会使并发变得毫无意义) ?

0 投票
1 回答
89 浏览

ios - UIView 中图形的 Z 级

我正在开发一个绘图应用程序,用户应该能够填充锁定区域并简单地在手指移动时画线。

锁定区域作为 SVG(路径)提供,因此我使用 SVGKit 库将它们呈现在屏幕上(作为视图中的 CAShapeLayers)。然后基本上在适当的图层上使用 fillColor 来填充它。

然而,对于线条绘制,核心图形开始发挥作用(CGContextStrokePath),线条总是绘制在 CALayers 层次结构中包含的所有内容之下。所以基本上在填充区域下方。

我想要达到的是一个系统,其中最后应用的绘图始终位于顶部。这样应用填充会覆盖该区域中的任何线条,然后绘制一条线将其显示在填充区域上方。

似乎 CGLayer 的 z-index 小于 CALayer 的 z-index,我需要一些其他方法来实现我的目标......