i_a*_*orf 20 objective-c uitextview uilabel ios
我有一个UILabel我需要转换为一个UITextView原因.当我这样做时,尽管使用相同的(自定义)字体,但文本的位置并不相同.
我发现如果我设置:
textView.textContainer.lineFragmentPadding = 0;
textView.textContainerInset = UIEdgeInsetsZero;
Run Code Online (Sandbox Code Playgroud)
这使文本非常接近,但如果我叠加UITextView在上面UILabel,我看到文本定位与每个新行相距更远.

该UILabel是绿的,UITextView是黑色的.这NSParagraphStyle用于将最小和最大线高设置为15.
我已经设置了段落样式和最小/最大行高,但我还是无法完全匹配它.我不是一个打印机,所以我不一定明白所有的字体相关条款的文件在NSLayoutManager和NSTextContainer和所有.
我只需要支持iOS 7及更高版本.
我不会切换到一些疯狂的基于CoreText的自定义小部件或使用一些随机的第三方库.如果必须的话,我很接近.但似乎应该有一些随机属性的组合来使它们布局相同.
Sto*_*nz2 15
我在此链接中找到了行间距的解决方案,并将其应用于您的问题.通过调整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];
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
3401 次 |
| 最近记录: |