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
相关产品推荐
相关产品推荐

