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

Posted

技术标签:

【中文标题】有没有办法隐式地使按钮成为多行?【英文标题】:Is there a way to implicitly make an button be multi-line? 【发布时间】:2013-10-24 00:39:56 【问题描述】:

我想要一个类似这样的按钮:

ONE
TWO

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

THREE
FOUR

或者任何数字,真的。 NSAttributedStrings 有没有一种方法可以让我在第一个单词之后总是有一个换行符?

【问题讨论】:

【参考方案1】:

这真的不是关于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 是故意的。我无法抗拒。

【讨论】:

以上是关于有没有办法隐式地使按钮成为多行?的主要内容,如果未能解决你的问题,请参考以下文章

如何将隐式参数传递给隐式类

有没有办法避免隐式转换为 void*?

有没有办法定义全局 Makefile(隐式)规则?

有没有办法(隐式)删除 Raku 角色混合?

如何可靠地使 send(2) 进行短发送?

有没有办法使用 ReadFromText 转换(Python)在 Apache Beam 中读取多行 csv 文件?