我希望两行文本在按钮上显得非常接近(小行间距)。我有以下代码:
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"50 WPM"];
NSMutableParagraphStyle *paragrapStyle = [[NSMutableParagraphStyle alloc] init];
paragrapStyle.alignment = NSTextAlignmentCenter;
paragrapStyle.lineSpacing = -10;
[string addAttribute:NSParagraphStyleAttributeName value:paragrapStyle range:NSMakeRange(0, string.length)];
UIFont *font1 = [UIFont systemFontOfSize:22.0];
[string addAttribute:NSFontAttributeName value:font1 range:NSMakeRange(0, string.length - 4)];
UIFont *font = [UIFont systemFontOfSize:15.0];
[string addAttribute:NSFontAttributeName value:font range:NSMakeRange(string.length - 3, 3)];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(0, string.length)];
[self.button setAttributedTitle:string forState:UIControlStateNormal];
但是由于行间距不能为负,所以它并没有像我希望的那样接近。它看起来像这样:
有没有办法让他们更接近?
答案 0 :(得分:56)
如果你有一个属性字符串,那么一切都应该可行。 :)你只需看一下。
- (void)setMinimumLineHeight:(CGFloat)aFloat
- (void)setMaximumLineHeight:(CGFloat)aFloat
尝试
[paragraphStyle setLineSpacing:0.0f];
[paragraphStyle setMaximumLineHeight:7.0f];
您将意识到maximumLineHeight不是maximumLineSpacing。 ^^
例如,使用setMaximumLineHeight:12];
答案 1 :(得分:0)
我建议阅读iOS7中引入的TextKit。我没有太多的经验,但我知道它在归结你的文本方面给了你很多可能性。
答案 2 :(得分:0)
在Swift 3中,您可以通过以下方式实现此目的:
let paragraph = NSMutableParagraphStyle()
paragraph.lineSpacing = 0
paragraph.maximumLineHeight = 20.
保持lineSpacing = 0.您可以调整maximumLineHeight以使其更近或增加间距。
答案 3 :(得分:0)
这里有一个Swift3的小扩展,支持负线间距
extension UILabel {
func set(lineSpacing: CGFloat, textAlignment: NSTextAlignment = NSTextAlignment.center) {
if let text = self.text {
let paragraphStyle = NSMutableParagraphStyle()
if lineSpacing < 0 {
paragraphStyle.lineSpacing = 0
paragraphStyle.maximumLineHeight = self.font.pointSize + lineSpacing
} else {
paragraphStyle.lineSpacing = lineSpacing
}
let attrString = NSMutableAttributedString(string: text)
attrString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attrString.length))
self.attributedText = attrString
self.textAlignment = textAlignment
}
}
}
答案 4 :(得分:-1)
如何对UIButton
进行子类化,并将2 UILabels
添加到靠近的按钮视图中。为标签创建属性并设置适当的:
CustomButton *btn = [CustomButton new];
btn.textLine1 = @"Top";
btn.textLine2 = @"Bottom";
这样做的唯一问题是当状态改变时你将需要处理文本颜色。