有没有办法隐式地使按钮成为多行?

时间:2013-10-24 00:39:57

标签: ios objective-c uibutton uilabel nsattributedstring

我想要一个类似于此的按钮:

ONE
TWO

一个词在另一个词之上。但是,它可能是:

THREE
FOUR

或任何数字,真的。有没有办法使用NSAttributedStrings,我可以说在第一个单词后总是有换行符?

1 个答案:

答案 0 :(得分:3)

这真的不是关于NSAttributedStringNSString,而是关于按钮本身。您可以考虑将UIButton子类化并覆盖setTitle:forState:以自动将第一个空格替换为\n

具体来说,setTitle:forState:看起来像这样

- (void)setTitle:(NSString *)title forState:(UIControlState)state {
    NSRange firstSpaceRanger = [title rangeOfString:@" "];
    if (firstSpaceRanger.location != NSNotFound) {
        title = [title stringByReplacingCharactersInRange:firstSpaceRanger withString:@"\n"];
    }
    [super setTitle:title forState:state];
}

例如,给定one two three这将产生

one
two three

要在UIButton初始化程序中

创建按钮多行,您可以这样做
self.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;

是的,firstSpaceRanger是故意的。我无法抗拒。