You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中UITableViewCell内UILabel为何出现额外内边距?

UITableViewCell中UILabel文本对齐问题解决方法

你手动给字符串加空格想让“-”对齐却没成功,本质是普通字体不是等宽字体——不同字符(比如“m”和“a”)的宽度不一样,导致你加的空格没法让“-”精准对齐,看起来像是标签有额外内边距。

给你几个靠谱的解决办法:

  • 换用等宽字体
    把UILabel的字体改成等宽字体,比如Menlo、Courier New,这类字体每个字符(包括空格)的宽度完全一致,手动加空格就能完美对齐。代码示例:

    cell.lbl1.font = UIFont(name: "Menlo", size: 17)
    cell.lbl2.font = UIFont(name: "Menlo", size: 17)
    cell.lbl3.font = UIFont(name: "Menlo", size: 17)
    
  • 拆分标签用AutoLayout约束
    把每行内容拆成两个独立的UILabel:左边放“Name”“Class”“Reason”,右边单独放“-”。然后给两个标签加约束:让左边标签左对齐,右边标签和左边标签保持固定间距,或者让右边标签对齐cell的右侧。这样不管左边文本长度如何,右边的“-”位置都能统一。

  • 用NSAttributedString的制表符对齐
    在文本里用\t代替手动空格,然后设置UILabel的制表位位置,强制让“-”对齐到指定位置。代码示例:

    let paragraphStyle = NSMutableParagraphStyle()
    // 自定义制表位距离左侧的宽度,比如150pt
    paragraphStyle.tabStops = [NSTextTab(textAlignment: .left, location: 150)]
    paragraphStyle.defaultTabInterval = 150
    
    cell.lbl1.attributedText = NSAttributedString(string: "Name\t- ", attributes: [.paragraphStyle: paragraphStyle])
    cell.lbl2.attributedText = NSAttributedString(string: "Class\t- ", attributes: [.paragraphStyle: paragraphStyle])
    cell.lbl3.attributedText = NSAttributedString(string: "Reason\t- ", attributes: [.paragraphStyle: paragraphStyle])
    

内容的提问来源于stack exchange,提问作者Amit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 23:35:07