问题标签 [ctframe]

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

core-graphics - 如何确定 CGPath 的来源?

我在 a 中绘制文本CGPath,为了对文本进行命中测试,我正在使用CTFrameGetLineOrigins. 这是文档中的内容:

每个 CGPoint 是 CTFrameGetLines 返回的行数组中相应行的原点,相对于帧路径的原点。

我将如何寻找框架路径的原点?我发现的示例都在最初创建路径时保存了路径的原点。我有两个问题:

  1. 我的路径的创建与我进行命中测试的地方相距甚远。我需要确保CGPoint除了CGPath. 丑陋,但并非不可逾越。
  2. 不是矩形的形状的原点是什么?圆形 CGPath 的起源是什么?
0 投票
1 回答
1584 浏览

objective-c - 在 CTFrame 中设置行距

我正在使用一种 QR 码生成器,它是一个 Mac 应用程序。我知道如何绘制文本,但我不知道如何设置行距。

我的代码:

我一直在寻找,但我什么也没找到。也许我必须使用 CTLine?

更新:

好的,我找到了这个,但它不能解决我的问题,我想要小于 0.0 点的行距。

0 投票
1 回答
525 浏览

objective-c - CTFrameGetVisibleStringRange() 返回 0

我有这段代码在读取 NSAttributedString 时生成 viewController 数组。在第一个循环之后,即使有更多文本要显示,函数 CTFrameGetVisibleStringRange() 也会返回 0。

0 投票
2 回答
959 浏览

objective-c - CTFrame 裁剪第一行文本

我在使用 Core Text 时遇到了问题,我在 a 中显示的文本的第一行在CTFrame顶部被截断,如下面的屏幕截图所示,带有字符“B”:

CTFrame 裁剪第一行的示例

我认为我在设置CTFrame. 我的代码如下:

其他 SO 帖子(这个这个)并不是很有帮助。

如何防止CTFrame剪切第一行?

- 编辑 -

减少lineheight到 20:

lineheight从第二行开始被尊重,但第一行文本的基线低于顶部 20 以内。

在此处输入图像描述

0 投票
1 回答
185 浏览

iphone - 如何将 CTFrame 添加到 UIViewController?

目标是像 iBooks 样式页面一样格式化和显示文本。为此,我UIPageViewController为所需的动画指定过渡并生成UIViewController集合等。为了显示我放置UITextView到每个UIViewController集合中的文本。

为了自动拆分页面的文本,我使用了自己的程序:

[NSString sizeWithFont:...].

感谢此处提供的信息 - iBooks 应用程序如何格式化单独页面上的文本?

一切正常,但没有我希望的那么好。NSString不是很方便,并且UITextView显示没有良好格式的文本。分裂也不够好=)

此外,我尝试使用Core Text. 该方法显示在这里 -如何将长 NSString 拆分为页面

它甚至可以工作。Core Text分割得很好,它还有许多其他的好功能。但!我无法将 Core Text 文本拆分的值与UITextView. 为了显示被核心文本页面拆分,我必须使用Core Text技术。

问题是:如何CTFrame为每个UIViewController集合创建一个并添加/绘制它UIPageController

我怀疑这是不可能的。如果是这样,请提出任何想法来实现所需的功能。

请原谅我的问题,我是 iOS 编程新手。

0 投票
2 回答
524 浏览

ios - CTFrameGetLineOrigins 返回前 Y 坐标

所有x坐标都是正确的,但所有y坐标都不正确 - 总是3.40282e+38。如何为每个CTLine获得正确的y

输出:

0 投票
1 回答
330 浏览

drawrect - CTFrameDraw() 忽略 NSObliquenessAttributeName

一些奇怪的事情正在发生。我正在使用 NSAttributedString 进行一些格式化,包括倾斜和倾斜。NSOBliquenessAttributeName 成功了。但后来我想扩展到 CoreText 以控制实际呈现文本的框架。甚至在弄清楚这一切之前,我注意到我的 NSObliquenessAttributeName 没有被呈现。我所有的其他属性仍然被渲染,所以我有点困惑。

0 投票
2 回答
201 浏览

objective-c - 您如何满足 Swift 中 CTFrameGetLineOrigins() 中的“lineOrigins”参数?

我试图CTFrameGetLineOrigins从这里弄清楚:CTFrameGetLineOrigins Got Incorrect Origins,并试图将 ObjC 转换为 Swift。

对象-C:

迅速:

但是我收到 CTFrameGetLineOrigins 的第三个参数的错误:
无法将类型“[CGPoint]”的值转换为预期的参数类型“UnsafeMutablePointer”

我如何克服这个错误?

0 投票
1 回答
141 浏览

ios - 使用 CoreText 从给定文本位置获取上一个 CTFrame 对象

这是示例代码块

举个例子,假设我们有很长的属性字符串,我们想从 400 索引开始绘制一个帧。

要绘制下一帧,我们可以计算当前帧中有多少字符并绘制它。以下是如何实现它的示例:

在这种情况下,我们能够获得下一个CTFrame对象。这很容易实现,因为CTFramesetterCreateFrame将用一条线填充整个帧,直到它到达帧的末尾或直到字符串的末尾。所以很容易获得下一个CTFrame起始位置。

主要问题是如何获取先前的CTFrame对象?还是之前的CTFrame起始位置?

想象一下,我们只有当前的文本位置,没有别的。从字符串的开头到结尾分别计算每个帧的起始位置并将其缓存在某处也很容易,但是如果我们能够更改属性字符串字体大小或类似的东西,这将改变CTFrame整个. 更改字体大小后,应从与更改字体大小CTFrame之前相同的 currentTextPosition 绘制对象,换句话说,更改字体大小不应影响当前帧的起始位置。