简体   繁体   中英

How to set UIButton titlelabel topdown

will like to know how to set the text in UIButton title Label in top down.

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. 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.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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