iphone - CoreText 中的行距和段落对齐

标签 iphone cocoa cocoa-touch ipad core-text

我正在使用 CoreText 渲染多列文本。但是,当我将第一段的第一个字母设置为比文本其余部分更大的粗体字体时,我遇到了 2 个问题(均在附图中可见):

  1. 第一行下方的间距太大(我理解这是因为第一个字符可能是 g、y、p、q 等。

  2. 第一行下方的行现在不与下一列中的相应行对齐。

任何有关如何克服这两个问题的建议将不胜感激,谢谢。 enter image description here

最佳答案

根据文档 kCTParagraphStyleSpecifierMaximumLineHeight 应该可以解决该问题,但不幸的是,至少在 IOS 4.3 上似乎不起作用。

CTParagraphStyleSetting theSettings[5] = 
{
    { kCTParagraphStyleSpecifierParagraphSpacing, sizeof(CGFloat), &spaceBetweenParaghraphs },
    { kCTParagraphStyleSpecifierParagraphSpacingBefore, sizeof(CGFloat), &topSpacing },
    { kCTParagraphStyleSpecifierLineSpacing, sizeof(CGFloat), &spaceBetweenLines },
    { kCTParagraphStyleSpecifierMinimumLineHeight, sizeof(CGFloat), &lineHeight},
    { kCTParagraphStyleSpecifierMaximumLineHeight, sizeof(CGFloat), &lineHeight}
};

CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(theSettings, 5);

公平地说,文档称它可在操作系统 v10.5 及更高版本中使用。

kCTParagraphStyleSpecifierMaximumLineHeight:
框架中任何行将占据的最大高度,无论字体大小或任何附加图形的大小如何。超过此高度的字形和图形将与相邻的线重叠。最大高度 0 表示没有行高限制。该值始终为非负数。
类型:CGFloat。
默认值:0.0。
应用程序:CTFramesetter。
适用于 Mac OS X v10.5 及更高版本。
在 CTParagraphStyle.h 中声明。

关于iphone - CoreText 中的行距和段落对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5312962/

相关文章:

iphone - 如何将生日从我的应用程序添加到我的手机地址簿

objective-c - Cocoa:向现有 GUI 应用程序添加命令行功能

iphone - 为什么此代码无法使用 MPMoviePlayerController 播放歌曲

iphone - 处理 UIImagePickerController 压缩的最快方法

ios - 防止触摸从 UIControl 传递到 ParentView

iphone - 使用 CATransform3DRotate 时的抗锯齿线

iphone - iPhone iOS4 内存泄漏?

php - 如何让我的服务器与 iPhone 应用程序一起工作?

objective-c - 访问子类实例

objective-c - 如何在 Objective-C 中使用 c 数组作为对象中的实例变量?