问题标签 [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 回答
883 浏览

iphone - 来自 IUView 的 CGLayer

在 iPhone 或 iPad 上,有人知道我们如何从 UIView 中获取 CGLayer(不是 CALayer)吗?

问候

0 投票
1 回答
891 浏览

iphone - 缓存到 CGLayer 比在 iPhone 上重绘慢

我正在为 iPhone 制作一个简单的绘图程序。目前,触摸事件将它们的位置添加到一个列表中,该列表与一组 CGContextAddLineToPoint 调用相连,这些调用在每次调用 drawRect 时都会重新绘制。

我在相当少的行数时遇到了性能问题(尽管它们是透明的),所以我尝试将所有内容都绘制到 CGLayer 中。现在,它不再每帧绘制每条线,而是每条线只绘制一次,并且每帧将 CGLayer 绘制到屏幕上。

如果有的话,这比我以前做的要慢。难道我做错了什么?我会更好地绘制到 UIImage 或其他东西吗?谢谢。

0 投票
2 回答
4821 浏览

iphone - 优化 Core Graphics 动画绘图 (iPhone)

我有一个每秒触发 30 次函数的循环。该函数改变了我用来制作动画的几个点的位置。我在所有点上画线,这意味着这些线每秒会改变 30 次。

我将这些线绘制到 CGLayer,然后在 drawRect: 方法中将其绘制到 UIView。我这样做是因为我知道在屏幕外绘图时性能会有所提高。但是,似乎 CGLayer 保存了所有实际线条而不是绘制的像素,因为即使我清除它,当绘制更多线条时,程序运行速度也会越来越慢。

我正在寻求其他方法来制作动画。什么是最有效的方法,为什么?

0 投票
1 回答
668 浏览

macos - 混合 CGLayers 和 CALayers

这是设置:

我有一个 NSView,它是一个支持 CALayer 的视图,并且包含许多 CALayer。我有一个用于视图“背景”的 CALayer,以及许多作为子层的小型 CALayer。有时这个视图可能非常大(大至 2560x1400),当它出现时,CALayers 中会出现非常明显的延迟。我的猜测是 Core Animation 在处理非常大的 CALayers 时会遇到一些问题。

因此,我想将这个“背景”层从 CALayer 更改为可能是 CGLayer 或其他东西,在那里它将像普通 CGLayer 一样呈现到视图中。然而,最重要的是,小型 CALayer 仍将像现在一样运行。这样我只有小的 CALayer,“背景”层可以缓存在 CGLayer 中,希望性能会显着提高。

任何人都知道如何做到这一点?

0 投票
1 回答
945 浏览

iphone - 向 UIImageView 添加圆角与预渲染 UIImage?

我正在试验 UIImageView 的层,特别是添加圆角。

我的问题是,执行以下操作对性能(如果有)有什么影响:

事先“预渲染”图像。

谢谢

0 投票
1 回答
9646 浏览

cocoa - CGLayer和CALayer有什么区别和兼容性?

我很困惑CGLayerCALayer。它们看起来很相似,那么为什么会有单独的实现呢?和 和 之间有什么区别和CGLayer兼容性CALayer

0 投票
1 回答
4310 浏览

iphone - 无法释放 CGContextRef(上下文来自 CGLayer)

当您像这样创建CGLayer,然后获取上下文时……似乎不可能释放 CGContextRef

释放 CGLayerRef 本身(显然)工作正常。

你会认为你可以在发布 CGLayer 之前发布 CGContextRef - 但不是吗?也不能在释放 CGLayer 之后释放 CGContextRef。

如果您释放 CGContextRef,应用程序将崩溃。

有谁知道这里发生了什么?(进一步注意,CGContextRelease 确实与 CFRelease 相同,但有一些 nil 检查。)

事实上,你不应该手动释放 CGContextRef 吗?有人知道吗?干杯。


关于乔尔的精彩回答如下:

释放CGLayerRef是否正确和正确?Joel 指出:
“是的,因为您从中获取它的函数的签名中包含‘Create’。请参阅:documentation/CoreFoundation/”

0 投票
2 回答
628 浏览

iphone - 努力从 CGLayer 中清除所有数据——甚至可以做到吗?

我们重复地制作一个 CGLayer,进行处理,然后发布它。这在实时发生了很多。每次制作一个全新的 CGLayer 肯定会有很多开销。所以...

当然,最好只保留该层,每次都删除其中的所有数据——而不是从头开始创建一个新数据。

注意:如果您在覆盖所有内容的空白或透明矩形中绘制,那只会在现有路径之上添加更多数据。

那么,如何真正“擦除”或“重新开始”一个 CGLayer?

有一个函数 CGContextBeginPath(cc) 但令人困惑:它似乎只清除了“那个”路径,它似乎没有将所有 CGLayer 擦除回 no-data state

如何将 CGLayer 返回到无数据状态?有人知道吗?

更新...

事实证明,实际上没有办法做到这一点。

经过大量实验,我们确定似乎没有办法清除 CGLayer 中的所有数据(这真的令人失望)。

请注意,添加一个新的白色或透明矩形只是这样做 - 它实际上添加了更多数据。

所以不幸的是,没有已知的方法可以做到这一点。如果你是在高频率下构建这些(也许是为了计算),你每次都必须从一个新的开始。或者,您显然可以使用 CGContextBeginPath()删除(实际上是删除,而不仅仅是覆盖)一条路径。

希望这将有助于将来的某人。

0 投票
1 回答
320 浏览

iphone - 如何自动释放 CGLayer?

我将 CGLayers 缓存在 NSMutableDictionary 中,并按如下方式使用它们:

我相信我在这里有内存泄漏,不是 CGLayerRelease从getLayerForCacheKey返回的层。我们有什么方法可以自动释放它们吗?

0 投票
1 回答
776 浏览

objective-c - Save edited image to the iPhone gallery

am working on an app where i am loading one image from the bundle and with the help of quartz i am adding two red circles on that image, the image is loaded in the instance of the UIImageVIew class.

I want to save the image with the red circle, so far i have found only one method and thats

but its not working as it is saving the image from the bundle only, in some post i have read that it can be done using CALayer but i found no useful link to do that, i would be glad if you can post me the answer or any tutorial link to do that.