问题标签 [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.
ios - CGLayer、CALayer和CGContext的区别
CGLayer、CALayer和CGContext有什么区别?
ios - CGLayer 中的重复子区域
我使用 Core Graphics 在 UIView 中绘制,并将内容缓存在 CGLayer 中。
它的一个功能需要复制 CGLayer 的一个子区域并将其移动到同一层内的新位置。作为一个传统的技巧,我曾经通过将图层绘制到它自己的上下文中来做到这一点。
但是,根据文档,此技巧的行为是“未定义的”,并且它在 iOS 12 中停止工作。
有没有其他方法可以有效地做到这一点?(我尝试将子区域绘制到 CGImage 中,然后将结果图像绘制回图层。但是这种方法似乎有点慢而且内存效率不高。:()
ios - 使用位图 CGContext 绘图不断增加内存使用量
我正在尝试在 CGLayer 中移动子区域内容。主要思想是我先将源区域(我要移动的部分)绘制到一个新创建的位图CGContext中,然后从中制作一个CGImage,并将其绘制回不同位置的原始图层。这是有问题的代码片段:
这按预期工作。但是,问题是,每次调用时内存使用量都会不断增加。
内存增加可能是由于图像的制作。但是最后好像没有发布。我的代码片段有什么问题?我需要手动发布创建的图像吗?如果是这样,我该怎么做,因为 Swift 如文档中所述使用 ARC 用于核心图形?
swift - 使用 CAGradientLayer 旋转 UIControl 不能正确更新 Swift
我没有使用普通按钮,而是将UIControl
因为我需要向它添加渐变。我还有一种方法可以添加阴影和活动指示器(在下图中不可见)作为有状态按钮,以在(例如)进行 API 调用时阻止用户敲击按钮。
尝试UIControl
让它旋转真的很棘手,为了能够做到这一点,我将阴影作为单独的视图添加到包含UIControl
以便可以添加阴影。
现在的问题是控件的行为不像旋转视图 - 让我向您展示一个屏幕抓取的上下文:
这是中间旋转,但肉眼几乎可以看到 -图像显示渐变是图像中蓝色长度的 75% UIView
。
https://github.com/stevencurtis/statefulbutton
为了执行这种旋转,我删除了shadowview
渐变框架,然后将渐变框架的框架更改为其边界,这就是问题所在。
所以这个旋转方法是通过父视图控制器调用的:
我知道这就是问题所在,而且我想这不是在完全正确的时间以与UIView
. 现在的问题是我已经尝试了很多方法来让它发挥作用,而我最好的解决方案(上图)并不完全存在。
建议使用UIButton
, 来使用渐变图像(请不要建议使用渐变图像作为 UIButton 的背景,我已经尝试过)或第三方库是没有帮助的。这是我的工作,它可以工作,但对我来说不能接受,我想让它像通常的视图一样工作(或者至少知道为什么不工作)。我也尝试过上面的其他解决方案,并选择了我自己的UIControl
. 我知道如果有 API 调用,我可以锁定视图,或者使用其他方式来阻止用户多次按下按钮。我正在尝试修复我的解决方案,而不是发明解决此问题的方法CAGradientLayer
。
问题:我需要使a 作为背景以UIControlView
与 aCAGradientLayer
相同的方式旋转UIView
,而不是出现上图所示的问题。
swift - CGContext 中的多种混合模式
我正在绘制一个 CGContext。
为了简化情况,假设我有两个 CGPath 集合。对于顶部的集合,当图层中的两条路径重叠时,我只想让顶部路径覆盖另一个,所以我使用destinationOver的混合模式。
但是当混合顶部集合和底部集合时,我想混合它们的颜色,所以我想使用正常的混合模式。但是,似乎我只能将新颜色与背景颜色混合,而不能先将顶部集合与特定方法混合,然后将其与背景集合与另一种方法混合。
是否可以先用自己的混合模式绘制图片,然后再将其与下面的图片混合?cgcontext绘制的时候可以创建两个“层”吗?实际上,我找到了一个叫 CGLayer 的东西,但似乎不推荐使用,而且我找不到任何关于如何使用 CGLayer 进行绘图的信息。
ios - 使用 CATextLayer 将文本绘制到 UIView 不起作用
我正在尝试使用 CATextLayer 将文本绘制到 UIView,但到目前为止没有任何显示。我一定错过了一些简单的东西。
函数调用