问题标签 [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 投票
2 回答
2202 浏览

ios - CGLayer、CALayer和CGContext的区别

CGLayer、CALayer和CGContext有什么区别?

0 投票
2 回答
55 浏览

ios - 如何消除iOS中的阴影

我想创建一个 ImageView 对象,但是,当我使用 contentRect 属性创建时,结果有任何阴影,帮帮我。

看这段代码:

并且,请阅读结果(图片): 在此处输入图像描述

0 投票
1 回答
1862 浏览

ios - 快速定位uiview的图层

我正在研究时间线视图。我在图标的中心画了一条线,并用填充颜色画了一个圆圈。但问题是当我画圆圈时,它总是在图标的顶部。现在图标没有显示。我尝试了图层的 zposition 。这是我尝试过的

ss1-------- s2

我想在圆圈顶部绘制带有白色色调的图标。请帮我

0 投票
0 回答
34 浏览

ios - CGLayer 中的重复子区域

我使用 Core Graphics 在 UIView 中绘制,并将内容缓存在 CGLayer 中。

它的一个功能需要复制 CGLayer 的一个子区域并将其移动到同一层内的新位置。作为一个传统的技巧,我曾经通过将图层绘制到它自己的上下文中来做到这一点。

但是,根据文档,此技巧的行为是“未定义的”,并且它在 iOS 12 中停止工作。

有没有其他方法可以有效地做到这一点?(我尝试将子区域绘制到 CGImage 中,然后将结果图像绘制回图层。但是这种方法似乎有点慢而且内存效率不高。:()

0 投票
1 回答
203 浏览

ios - 使用位图 CGContext 绘图不断增加内存使用量

我正在尝试在 CGLayer 中移动子区域内容。主要思想是我先将源区域(我要移动的部分)绘制到一个新创建的位图CGContext中,然后从中制作一个CGImage,并将其绘制回不同位置的原始图层。这是有问题的代码片段:

这按预期工作。但是,问题是,每次调用时内存使用量都会不断增加。

内存增加可能是由于图像的制作。但是最后好像没有发布。我的代码片段有什么问题?我需要手动发布创建的图像吗?如果是这样,我该怎么做,因为 Swift 如文档中所述使用 ARC 用于核心图形?

0 投票
1 回答
384 浏览

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,而不是出现上图所示的问题。

完整示例: https ://github.com/stevencurtis/statefulbutton

0 投票
0 回答
115 浏览

swift - CGContext 中的多种混合模式

我正在绘制一个 CGContext。

为了简化情况,假设我有两个 CGPath 集合。对于顶部的集合,当图层中的两条路径重叠时,我只想让顶部路径覆盖另一个,所以我使用destinationOver的混合模式。

但是当混合顶部集合和底部集合时,我想混合它们的颜色,所以我想使用正常的混合模式。但是,似乎我只能将新颜色与背景颜色混合,而不能先将顶部集合与特定方法混合,然后将其与背景集合与另一种方法混合。

是否可以先用自己的混合模式绘制图片,然后再将其与下面的图片混合?cgcontext绘制的时候可以创建两个“层”吗?实际上,我找到了一个叫 CGLayer 的东西,但似乎不推荐使用,而且我找不到任何关于如何使用 CGLayer 进行绘图的信息。

0 投票
0 回答
72 浏览

ios - CGLayer CGGradient 径向渐变效果不佳

我正在使用此代码来获得CGLayeralpha 径向渐变:

它应该呈现平滑的渐变,但不是这个,我得到了两个不同的结果(图像是白色的,在暗模式下看起来还可以:D):一个是带有实心的不良渐变(如果硬度> 0.5,则需要实心)

在此处输入图像描述

或者具有相似的硬度和大小值,更模糊和丑陋的东西:

在此处输入图像描述

如何通过创建渐变获得更好的结果?而不是平滑过渡,我有一些像素化的半椭圆形,看起来很难看。我想要像画笔一样的东西,它可以在 alpha 通道上提供平滑的过渡。

我正在使用此代码“渲染”它们:

0 投票
1 回答
55 浏览

ios - 使用 CATextLayer 将文本绘制到 UIView 不起作用

我正在尝试使用 CATextLayer 将文本绘制到 UIView,但到目前为止没有任何显示。我一定错过了一些简单的东西。

函数调用