23

我想让按钮的两行文本非常靠近(小行距)。我有以下代码:

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];

但由于行间距不能为负数,它并没有像我希望的那样接近。它看起来像这样:

在此处输入图像描述

有什么办法可以让他们更亲近吗?

4

5 回答 5

57

好吧,如果您有一个属性字符串,那么一切都应该是可能的。:) 你只需要看更多。

- (void)setMinimumLineHeight:(CGFloat)aFloat
- (void)setMaximumLineHeight:(CGFloat)aFloat

尝试

[paragraphStyle setLineSpacing:0.0f];
[paragraphStyle setMaximumLineHeight:7.0f];

你会意识到maximumLineHeight 不是maximumLineSpacing。^^

例如,这与 setMaximumLineHeight:12];

在此处输入图像描述

于 2013-10-31T16:20:01.217 回答
2

这是 Swift3 中的一个小扩展,它支持负 lineSpacing

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
        }
    }
}
于 2017-10-27T13:01:22.680 回答
0

我建议阅读iOS7中引入的 TextKit。我没有太多的经验,但我知道它给你提供了很多可能性,当涉及到你的文本归属时。

于 2013-10-24T01:03:49.633 回答
0

在 Swift 3 中,您可以通过以下方式实现:

let paragraph = NSMutableParagraphStyle()
paragraph.lineSpacing = 0
paragraph.maximumLineHeight = 20.

保持 lineSpacing = 0。您可以调整 maximumLineHeight 使其更接近或增加间距。

于 2017-08-22T15:16:00.430 回答
-2

子类化怎么样UIButton,并将 2 添加UILabels到靠近在一起的按钮视图中。为标签创建属性并正确设置:

CustomButton *btn = [CustomButton new];

btn.textLine1 = @"Top";
btn.textLine2 = @"Bottom";

这样做的唯一问题是,当状态发生变化时,您需要自己处理文本颜色。

于 2013-10-31T14:58:49.203 回答