我有一个UILabel
我需要将其转换为UITextView
因为原因。当我这样做时,尽管使用相同的(自定义)字体,但文本的位置并不相同。
我发现如果我设置:
textView.textContainer.lineFragmentPadding = 0;
textView.textContainerInset = UIEdgeInsetsZero;
这使得文本非常接近,但是如果我叠加UITextView
超过顶部的UILabel
,我看到文本定位随着每一个新行而变得更远。
The UILabel
是绿色的,则UITextView
是黑色的。这是使用NSParagraphStyle
将最小和最大行高设置为 15。
我已经尝试过设置段落样式和最小/最大行高,但我无法完全匹配它。我不是打印机,所以我不一定理解文档中所有与字体相关的术语NSLayoutManager
and NSTextContainer
等等。
我只需要支持 iOS 7 及更高版本。
我不会切换到一些疯狂的基于 CoreText 的自定义小部件或使用一些随机的第三方库。如果有必要的话,我可以接受足够近的距离。但似乎应该有一些随机属性的组合来使它们的布局相同。
我找到了行间距的解决方案在这个链接 https://stackoverflow.com/questions/3760924/set-line-height-in-uitextview并将其应用于您的问题。通过调整我设法让它非常接近lineSpacing
财产。我使用 HelveticaNeue 尺寸 13 进行了测试,并设法使其对齐,如下面的屏幕截图所示。
textView.textContainer.lineFragmentPadding = 0;
textView.textContainerInset = UIEdgeInsetsZero;
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = -0.38;
NSDictionary *attrsDictionary =
@{ NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue" size:13.0f],
NSParagraphStyleAttributeName: paragraphStyle};
textView.attributedText = [[NSAttributedString alloc] initWithString:textView.text attributes:attrsDictionary];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)