如何在iOS 7上完美地证明文本

时间:2013-10-23 14:50:35

标签: ios typography textkit

我正在尝试水平对齐不同大小和字体的文本位。

这是我想要的结果(用scribus制作):

mockup

您可以看到文本水平对齐(与像素对齐)。

我尝试使用基本的UITextView实现它,并证明文本的合理性。这是我得到的:

justified

您可以看到文本未与像素水平对齐。 我尝试了居中,但仍然不够好:

centered

如果事情不够严重,第一行和第三行都是动态文本......因此它们的大小会发生变化。

我看了一下textkit,但没有找到任何结论......

我的主角是:

  1. 找到给定宽度的文本的最佳字体大小。
  2. 空间字形均匀,以便文本边界框等于所需的宽度。
  3. 但我不知道该怎么做。 任何线索?谢谢!

1 个答案:

答案 0 :(得分:0)

您是否尝试过NSString的boundingRectWithSize:options:attributes:context:

CGRect rect = [string boundingRectWithSize:CGSizeMake(width, height) 
                                   options:NSStringDrawingUsesFontLeading 
                                attributes:attributes
                                   context:nil];

如果您还支持iOS 6,请使用-[NSString sizeWithFont:constrainedToSize:lineBreakMode:]

CGSize textSize = [string sizeWithFont:uifont
                     constrainedToSize:maximumCGSize
                         lineBreakMode:lineBreakMode];

自iOS 7起,sizeWithFont:constrainedToSize:lineBreakMode:方法已被弃用。

使用其中一种方法,您可以找到最宽的线,并与其他线匹配。在你的动态文本的情况下,我建议不要使用UITextView来确保文本正确对齐。