问题标签 [catextlayer]

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 回答
392 浏览

ios - CABasicAnimation 仅适用于以相同方法创建的图层

我需要根据某些条件为不同的 CATextLayers 设置动画。这就是为什么我编写了一个接受图层并对其进行动画处理的方法。这里是:

“文本”是一个 CATextLayer,它以其他方法创建、初始化并添加到子层。问题是这段代码不会使“文本”层动画。

(请不要注意方法接收颜色。我暂时放了红色和黑色进行测试。)

我开始测试。如果我在这个方法中创建一个图层,然后尝试为这个新创建的方法设置动画,它可以正常工作。如果我将代码复制粘贴到创建所有图层的方法并尝试为其中一个设置动画 - 它也可以正常工作。

但是我需要在不同的时刻为不同的图层设置动画,所以我认为这个功能是必不可少的。

请解释一下我做错了什么。先感谢您。

更新:这是创建图层并将其放置到 UIView 上的方式

如果我将这样的代码放在我做动画的相同方法中,它就可以工作。当我在这样的方法中传递层时它停止工作:

0 投票
1 回答
515 浏览

ios - 动画字体大小

简单的问题:我有一个CATextLayer. CAAnimation当我用 a (你想要的任何类型,更喜欢)捏它时,我想让它更大CABasicAnimation。我怎样才能做到这一点?

注意:不能使用简单CABasicAnimation的 with transform.scaleas 键,因为如果是,则调整大小。但是文字变得很糟糕(一点也不清晰)。如果我可以在缩放时渲染文本,这只是一个选项。如果这是可能的,请帮助。谢谢!

0 投票
1 回答
100 浏览

ios - How to not scale CATextLayers when scaling super layer

My problem is:

I have a CAShapeLayer named outCircle. I add some CATextLayers as sublayers of outCircle. The problem is that when I'm pinching outCircle and doing so scale it, the sublayer CATextLayers resize too (maybe obvious) and become blurry and not crisp. The text looks horrible!

So I want to keep the original size and (maybe) position of the text layers yet keeping them sublayers of outCircle.

  • Is it possible?
  • How can I do it?

One solution is to not make the CATextLayers sublayers of outCircle but for various reasons I need to do it. Thanks for your help in advice!

0 投票
1 回答
375 浏览

ios - 更改现有 NSAttributedString 的颜色

我正在尝试创建一个类别来更改在 CATextLayer 中呈现的现有 NSAttributedString 的颜色。这是类别实现

CATextLayer 是 CAShapeLayer 的子类。我还应该提到 CATextLayer 确实使用正确的属性进行渲染,除了颜色。

该字符串显示属性除了颜色。然后我得到一大堆错误:

CGContextSetFillColorWithColor:无效的上下文 0x0。这是一个严重的错误。此应用程序或它使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体下降。此通知是出于礼貌:请解决此问题。这将成为即将到来的更新中的致命错误。

任何想法为什么它不起作用?

0 投票
0 回答
225 浏览

text - CATextLayer - 设置字距/字母间距

如何在 CATextLayer 上设置文本的字距?

我知道 NSAttributed String 是可能的,但是我的标签文本经常变化,我不想在每一帧都创建一个新的 NSAttributed String 对象。

0 投票
1 回答
277 浏览

ios - How to use CATextLayer together with NSMutableAttributedString

I try to use a CATextLayer together with a NSMutableAttributedString.

Once I set the string property of my CATextLayer to an NSMutableAttributedString it gets automatically replaced by an immutable NSAttributedString.

I checked for the result of calling class on the string property before and after setting it and the pointer. I hand an NSConcreteMutableAttributedString to the CoreTextLayer and right after the setter is called and I ask the CATextLayer for the class of its string property, I get this result: NSConcreteAttributedString. Also the pointers are different before and after (obviously).

What can I do to get that right?

0 投票
1 回答
380 浏览

ios - cashapelayer 和 catextlayer 作为子层

我正在开发一个 ios 应用程序,其中包含带有节点和边缘的滚动视图。

起初我使用 calayer 并使用键值观察开始和结束节点。使用以下代码绘制边缘和边缘标签:

这行得通,我能够拖动节点并跟随边缘,但由于内存问题,应用程序崩溃了。然后我被告知我应该使用 cashapelayer。这也工作得更好,但现在我在边缘添加标签时遇到问题。

标签应对齐并相应地旋转到边缘的中心。

以下代码显示了我如何将边缘绘制为 cashapelayer

我应该如何添加 catextlayer?作为cashapelayer 的子层还是滚动视图的子层?

我试图添加带有观察者的 cattextlayer 以观察节点的变化,但我无法与 cashapelayer 同时更新。

我希望你能理解,如果不明白,请告诉我,我会尽力澄清我的问题。

谢谢。

0 投票
1 回答
245 浏览

core-graphics - CATextLayer 动画单个字符

我试图找到一种优雅的方式来为 CATextLayer 中单个字符的框架和不透明度设置动画。但是,为了使动画顺利完成,我无法找到一种方法来确定文本中每个字符的位置。文本的字体也是动态的,因此无法静态确定字距或间距。

0 投票
0 回答
49 浏览

iphone - 使用 UIInterfaceOrientation 旋转 CATextLayer

我有一个 CATextLayer 作为 CALayer 的子层。CALayer 旋转,CATextLayer 也按预期旋转。问题是 CATextLayer 应该总是面朝下(根据 UIInterfaceOrientationPortrait)。我曾尝试旋转 CATextLayer,但它会移动位置并移出其父层的边界。我只想旋转 CATextLayer,使其始终与当前界面方向对齐,无论其父层的角度是多少。我已经在这个线程中尝试了答案,但CATextLayer 旋转没有任何反应?

0 投票
3 回答
1304 浏览

ios - 如何在 iOS 中实现透明文本效果?

我真的很想在我的 iOS 应用程序中实现透明的文本样式效果。在 Photoshop 中创建所需的效果非常简单,但我不知道如何在代码中完成。

应用于文本的效果仅显示文本下方的背景,但将其变暗(或变亮)以使其可见。文本根本没有填充,它只是增强了文本所在的背景。

这是我想要获得的:
在此处输入图像描述
在此处输入图像描述

这种效果有点类似于 iOS 7.1+ 上的“滑动解锁”文本(在滑动动画发生之前),但我想要更多的图像显示出来。

怎么能创造出这样的效果?我只需要支持iOS 8+。

这是在 Photoshop 中创建效果的方式(可能有更简单的方法):

  1. 打开图像
  2. 将图像复制到另一层
  3. 更改混合模式(将叠加更暗,或屏幕更亮)
  4. 添加图层蒙版
  5. Option/alt 单击图层蒙版并将填充更改为黑色
  6. 在需要的地方添加白色文本
  7. Alt 单击图层蒙版

它不像仅仅创建一个黑色或白色标签并降低不透明度那么简单。这就是你这样做时的样子:
在此处输入图像描述