【发布时间】:2013-01-11 12:55:18
【问题描述】:
我在 UITableViewCell 中有一个多行 UILabel。我想控制线条之间的间距,将线条压缩得更近一些。我读过控制“领先”的唯一方法是使用属性字符串。所以我通过使标签属性而不是纯文本来做到这一点,然后我将 lineHeightMultiple 设置为 0.7 以压缩行:
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineHeightMultiple = 0.7;
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
paragraphStyle.alignment = NSTextAlignmentLeft;
NSDictionary *attrs = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaNeue-Bold" size:15.0], NSFontAttributeName, paragraphStyle, NSParagraphStyleAttributeName, nil];
NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:@"Here is some long text that will wrap to two lines." attributes:attrs];
[cell.textLabel setAttributedText:attributedText];
问题是,现在整个标签不在 UITableViewCell 中垂直居中。
我该如何解决这个问题?在下面的附件中,你可以明白我的意思。 “压缩”的多行 UILabel 在每行中都比应有的更高,并且不再与右侧的箭头指示器垂直对齐。
【问题讨论】:
-
我认为当你将它添加到 UITableViewCell 时增加 UILable 的 y 位置可以让你的工作完成,这是我想出来的最简单的方法。许多其他选项也可用。
-
@Yuvrajsinh,如果你把它放在答案中,我会投票支持你的赏金答案。也可以调整 lineSpacing、paragraphSpacingBefore 和 paragraphSpacing 属性而不是这样做,以使文本在 UILabel 文本区域的中间按需要显示。
-
新的答案应该被接受为正确的答案,你不觉得吗?
-
@hfossli 这听起来像是更好的解决方案,这就是我标记它的原因,但我还没有机会在我的代码中测试它,这就是我没有标记的原因它作为解决方案呢。 :)
-
@MasonG.Zhwiti 有道理:)
标签: ios uitableview uilabel vertical-alignment nsattributedstring