问题标签 [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.
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:
我想使用 CATextLayer 和 NSAttributedString's 的原因是因为要显示的字符串在不同的点上会有不同的颜色。我想我只需要像往常一样重新手动绘制字符串......当然,总是可以选择从 sizeWithFont 获取结果以获得正确的行高。
稍微滥用“代码”标签以使帖子更具可读性。
我无法用“CATextLayer”标记帖子——令人惊讶的是,目前不存在这样的标签。如果有足够声誉的人碰到这篇文章,请相应地标记它。
ios - 在 CATextLayer 中格式化不同的特定字母?
那可能吗?
如果不使用 CATextLAyer,那我该怎么做?
cocoa - 是否可以在 CATextLayer 中使用自定义段落样式绘制字符串?
我想画一个这样的列表:
这是我的代码:
然后我将 attrString 设置为 CATextLayer 的字符串属性,但 paragph 样式未应用于结果。
iphone - 带截断的多行 CATextLayer
如果我包装了 == YES,有没有办法让 CATextLayer 显示“...”?
iphone - CATextLayer 和字符之间的跟踪/间距
我正在使用 CATextLayer,为了在 iOS 中使用自定义字体,我知道有一种简单的方法可以使用自定义字体,Fonts provided by application
但这是不同的字体。我想知道有没有办法改变每个字符之间的间距?我没有找到任何财产这样做!
编辑:
objective-c - 如何旋转 CATextLayer 中的文本?
我在 a 中显示一些文本,CATextLayer
但它太大以适合定义的矩形。我想让文字慢慢旋转,这样它就可以被阅读了。我不知道该怎么做。我希望有一种相对简单的方法可以做到这一点,如果不是有人知道示例或教程的 URL,则显示/教授如何做这样的事情。
更新:我想我想描述的是文本本身会旋转。像 html marquee 标记之类的东西会做。
objective-c - 缩放预览:使用 NSTextView、NSTextField、CATextLayer 或 drawInRect?
我正在编写一个可可应用程序,它以投影仪屏幕为中心呈现文本(垂直和水平)。
我想在计算机屏幕上的可可窗口中(在 a 中NSCollectionView
)对我在“墙上”看到的内容进行一个小预览。就像 Powerpoint 中的“演示者模式”一样,您可以在其中看到当前和下一张幻灯片作为预览。
您建议采用哪种方式来实现所呈现的文本?
NSTextField
事实证明,对齐和缩放文本很棘手。CATextLayer
另一方面,对于这样一个简单的任务来说,感觉有点过头了,尽管缩放就像一个魅力。会使用NSTextView
还是drawInRect
一个很好的权衡?
感谢您的帮助,以确保在我花费数小时和数天的时间之前没有错过任何东西:) 我的目标是保持它的健壮和简单。谢谢!
ios - iOS - 禁用或编辑 CATextLayer 的动画
我使用 CATextLayer var,当尝试增加字体或在此字符串中键入内容时,这些操作会产生动画效果,如何编辑或禁用 CATextLayer 的动画?
ipad - 子层上的 CAlayer 变换随着手势闪烁(ipad)
我有一个包含很少其他子层的 CALayer(实际上是 CATextLayer)
当用户在 ipad 上做通常的手势时,我想在该层上应用一些转换,但它似乎不能正常工作。使用 CALayer 的目的是仅将转换应用于该层,以便我的所有子文本层将同时受到相同转换的影响。
正在发生的事情是转换似乎在先前位置和当前位置之间闪烁。我真的不明白可能是什么问题......例如,当我做一个 2 根手指平移手势时,CaTextLayer 位置在我的手势过程中一直闪烁,最后它们都正确放置在新的翻译位置。
所以一切似乎都很好,除了那个让我很困扰的闪烁的东西。
我需要设置一些我不知道的属性吗?我在想它可能也与边界和框架有关......
这是我创建 CATextLayer 的方法(仅在创建时完成一次,并且可以正常工作):
这就是我将它们添加到我的 Super CALayer 的方式
以下是我如何应用我的转换:
_layerMgr.transform = CATransform3DMakeAffineTransform(_transform);
ios - 基于 UISlider 动作的 CATextLayer 动画
我在执行此动画时遇到了一些问题。我感觉它可能存在一些问题,但很难找到正确的方向。我想在用户拖动 UISlider 控件时对 CATextLayer 进行脉冲(放大和缩小)。
在 IBAction 方法中,我有以下代码。我已经检查以确保该方法实际上正在被调用。
我注意到该方法被反复调用非常快,我不确定这是否阻止了动画的进行,或者动画块本身存在问题。