简体   繁体   English

如何设置UIButton titlelabel自上而下

[英]How to set UIButton titlelabel topdown

will like to know how to set the text in UIButton title Label in top down. 想知道如何在UIButton标题标签中自上而下设置文本。

the text is "Press Me" across 文字是“按我”

will like to show 想要展示

"
p
r
e
s
s

m
e
"

i did this 我做到了

CGAffineTransform newTransform = CGAffineTransformMakeRotation(90 * (M_PI / 180));
    self.activeButton.transform = newTransform;

but it only changed the button direction not the text 但是它只改变了按钮的方向,没有改变文字

Rotating text to be vertical is different than writing each letter on a separate line, which is what I gathered to be your intention from your question. 将文本旋转为垂直不同于将每个字母写在单独的行上,这是我从您的问题中收集到的意图。

To do that, you need to actually write each letter on a separate line! 为此,您实际上需要将每个字母写在单独的一行上! You can create new lines in UIButton text by holding Alt/Option while pressing enter in the text field in Interface Builder. 您可以通过按住Alt / Option的同时在Interface Builder的文本字段中按Enter来在UIButton文本中创建新行。 Note that this has to be the text field property in the Utilities panel, you can't add new lines if you're editing the text by double clicking the button. 请注意,这必须是“实用工具”面板中的text字段属性,如果要通过双击按钮编辑文本,则不能添加新行。

Once you've done this, change the "Line Break" mode to either Character Wrap or Word Wrap in order for it to display multiple lines. 完成此操作后,将“换行符”模式更改为“字符换行”或“自动换行”,以使其显示多行。

Edit: I realised that you may be trying to work with your button in code, so I wrote this piece that should convert a regular button's text to be spaced vertically, letter by letter: 编辑:我意识到您可能正在尝试使用代码中的按钮,因此我写了这篇文章,应该将常规按钮的文本转换为垂直方向,逐个字母地隔开:

// Create a temporary NSString to store the new formatted text string
// Set it to the first character so we can have a simple loop from the second to the last character
NSString *newText = [NSString stringWithFormat:@"%C",[button.titleLabel.text characterAtIndex:0]];
for(int i=1;i<button.titleLabel.text.length;i++) {
    // Format newText to include a newline and then the next character of the original string
    newText = [NSString stringWithFormat:@"%@\n%C",newText,[button.titleLabel.text characterAtIndex:i]];
}
// We must change the word wrap mode of the button in order for text to display across multiple lines.
button.titleLabel.lineBreakMode = NSLineBreakByCharWrapping;
// .. and for an unknown reason, the text alignment needs to be reset. Replace this if you use something other than center alignment.
button.titleLabel.textAlignment = NSTextAlignmentCenter;
// newText now contains the properly formatted text string, so we can set this as the button label
[button setTitle:newText forState:UIControlStateNormal];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM