• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 将 UIButton 的标题垂直居中,用于比宽度长的单词

[复制链接]
菜鸟教程小白 发表于 2022-12-13 06:23:11 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想实现一个 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap