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

ios4 - 调整 CATextLayer 的大小以适应 iOS 上的文本

到目前为止,我所有的研究似乎都表明不可能准确地做到这一点。一开始我仅有的两个选择是:

a) 为 CATextLayer 使用布局管理器 - 自 4.0 起在 iOS 上不可用

b) 使用 sizeWithFont:constrainedToSize:lineBreakMode: 并根据此处返回的大小调整 CATextLayer 的边框。

选项 (b) 是最简单的方法,应该可行。毕竟,它与 UILabel 完美配合。但是当我对 CATextLayer 应用相同的框架计算时,框架总是比预期或需要的大一点。

事实证明,CATextLayers 和 UILabels 中的行间距(对于相同的字体和大小)是不同的。因此,sizeWithFont(其行距计算将与 UILabel 的行距计算匹配)不会返回 CATextLayers 的预期大小。

通过使用 UILabel 打印相同的文本,而不是 CATextLayer 并比较结果,进一步证明了这一点。第一行中的文本完全重叠(它是相同的字体),但 CATextLayer 中的行距仅比 UILabel 中的短一点。(对不起,我现在不能上传截图,因为我已经包含机密数据,而且我目前没有时间制作示例项目来获得干净的截图。我会稍后上传它们以供后人使用,当我有时间)

这是一个奇怪的区别,但我认为可以通过为我在那里使用的 NSAttributedString 指定适当的属性来调整 CATextLayer 中的间距,但情况似乎并非如此。查看 CFStringAttributes.h 我找不到可能与行距相关的单个属性。

底线:

因此,在需要图层适合其文本的情况下,似乎不可能在 iOS 上使用 CATextLayer。我是对的还是我错过了什么?

PS:

  1. 我想使用 CATextLayer 和 NSAttributedString's 的原因是因为要显示的字符串在不同的点上会有不同的颜色。我想我只需要像往常一样重新手动绘制字符串......当然,总是可以选择从 sizeWithFont 获取结果以获得正确的行高。

  2. 稍微滥用“代码”标签以使帖子更具可读性。

  3. 我无法用“CATextLayer”标记帖子——令人惊讶的是,目前不存在这样的标签。如果有足够声誉的人碰到这篇文章,请相应地标记它。

0 投票
2 回答
232 浏览

ios - 在 CATextLayer 中格式化不同的特定字母?

那可能吗?

如果不使用 CATextLAyer,那我该怎么做?

0 投票
1 回答
695 浏览

cocoa - 是否可以在 CATextLayer 中使用自定义段落样式绘制字符串?

我想画一个这样的列表:

这是我的代码:

然后我将 attrString 设置为 CATextLayer 的字符串属性,但 paragph 样式未应用于结果。

0 投票
1 回答
1704 浏览

iphone - 带截断的多行 CATextLayer

如果我包装了 == YES,有没有办法让 CATextLayer 显示“...”?

0 投票
1 回答
3927 浏览

iphone - CATextLayer 和字符之间的跟踪/间距

我正在使用 CATextLayer,为了在 iOS 中使用自定义字体,我知道有一种简单的方法可以使用自定义字体,Fonts provided by application但这是不同的字体。我想知道有没有办法改变每个字符之间的间距?我没有找到任何财产这样做!

编辑:

0 投票
1 回答
973 浏览

objective-c - 如何旋转 CATextLayer 中的文本?

我在 a 中显示一些文本,CATextLayer但它太大以适合定义的矩形。我想让文字慢慢旋转,这样它就可以被阅读了。我不知道该怎么做。我希望有一种相对简单的方法可以做到这一点,如果不是有人知道示例或教程的 URL,则显示/教授如何做这样的事情。

更新:我想我想描述的是文本本身会旋转。像 html marquee 标记之类的东西会做。

0 投票
1 回答
448 浏览

objective-c - 缩放预览:使用 NSTextView、NSTextField、CATextLayer 或 drawInRect?

我正在编写一个可可应用程序,它以投影仪屏幕为中心呈现文本(垂直和水平)。

我想在计算机屏幕上的可可窗口中(在 a 中NSCollectionView)对我在“墙上”看到的内容进行一个小预览。就像 Powerpoint 中的“演示者模式”一样,您可以在其中看到当前和下一张幻灯片作为预览。

您建议采用哪种方式来实现所呈现的文本?

NSTextField事实证明,对齐和缩放文本很棘手。CATextLayer另一方面,对于这样一个简单的任务来说,感觉有点过头了,尽管缩放就像一个魅力。会使用NSTextView还是drawInRect一个很好的权衡?

感谢您的帮助,以确保在我花费数小时和数天的时间之前没有错过任何东西:) 我的目标是保持它的健壮和简单。谢谢!

0 投票
2 回答
488 浏览

ios - iOS - 禁用或编辑 CATextLayer 的动画

我使用 CATextLayer var,当尝试增加字体或在此字符串中键入内容时,这些操作会产生动画效果,如何编辑或禁用 CATextLayer 的动画?

0 投票
1 回答
1327 浏览

ipad - 子层上的 CAlayer 变换随着手势闪烁(ipad)

我有一个包含很少其他子层的 CALayer(实际上是 CATextLayer)

当用户在 ipad 上做通常的手势时,我想在该层上应用一些转换,但它似乎不能正常工作。使用 CALayer 的目的是仅将转换应用于该层,以便我的所有子文本层将同时受到相同转换的影响。

正在发生的事情是转换似乎在先前位置和当前位置之间闪烁。我真的不明白可能是什么问题......例如,当我做一个 2 根手指平移手势时,CaTextLayer 位置在我的手势过程中一直闪烁,最后它们都正确放置在新的翻译位置。

所以一切似乎都很好,除了那个让我很困扰的闪烁的东西。

我需要设置一些我不知道的属性吗?我在想它可能也与边界和框架有关......

这是我创建 CATextLayer 的方法(仅在创建时完成一次,并且可以正常工作):

这就是我将它们添加到我的 Super CALayer 的方式

以下是我如何应用我的转换:

_layerMgr.transform = CATransform3DMakeAffineTransform(_transform);

0 投票
1 回答
941 浏览

ios - 基于 UISlider 动作的 CATextLayer 动画

我在执行此动画时遇到了一些问题。我感觉它可能存在一些问题,但很难找到正确的方向。我想在用户拖动 UISlider 控件时对 CATextLayer 进行脉冲(放大和缩小)。

在 IBAction 方法中,我有以下代码。我已经检查以确保该方法实际上正在被调用。

我注意到该方法被反复调用非常快,我不确定这是否阻止了动画的进行,或者动画块本身存在问题。