OGeek|极客世界-中国程序员成长平台

标题: ios - 将 UIButton 的标题垂直居中,用于比宽度长的单词 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 06:23
标题: ios - 将 UIButton 的标题垂直居中,用于比宽度长的单词

我想实现一个 UIButton,这样无论文本的长度如何,标题都会在内部居中显示。

我面临的问题是按钮的宽度字体大小需要是固定值,因为它们需要与其余部分保持一致用户界面细节。而且我也不能截断文本

我可以拆分单词,但只有当单词不适合标题的宽度时。

目前它适用于 1 行和 2 行文本(带空格),但 当标题包含一个不带空格的长单词时,它仅将第一行居中(请参阅所附图片)。

enter image description here enter image description here

我想我想做这样的事情:

if (button.currentTitle.length > (buttonWidth/characterWidth)) { //2-line title buttons
    // Do something special to fix the problem
}

但我已经尝试设置所有这些,但没有一个起作用:

[button.titleLabel setTextAlignment:NSTextAlignmentCenter];
[button.titleLabel setBaselineAdjustment:UIBaselineAdjustmentAlignCenters];
[button setTitleEdgeInsets:UIEdgeInsetsMake(0, 0, 20, 0)];
button.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

对保持 titleLabel 垂直居中的任何想法/建议?



Best Answer-推荐答案


您可以用字符包装标题,设置按钮的line break modeNSLineBreakByCharWrapping (默认情况下它在单词边界处换行),仅当它包含不适合的单词时。

if (button.currentTitle.length > (buttonWidth/characterWidth)) { //2-line title buttons

    // Check if title contains long words
    NSArray *words = [button.currentTitle componentsSeparatedByString" "];
    for (NSString *word in words) {
        if (word.length > (buttonWidth/characterWidth)) {
            // Set the line break mode to char wrapping
            button.titleLabel.lineBreakMode = NSLineBreakByCharWrapping;
            break; // No need to continue :-)
        }
    }

}

关于ios - 将 UIButton 的标题垂直居中,用于比宽度长的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29614597/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4