为了账号安全,请及时绑定邮箱和手机立即绑定

UILabel文本边距

UILabel文本边距

慕码人2483693 2019-07-06 13:23:13
UILabel文本边距我希望设置一个UILabel却找不到方法去做。标签有一个背景设置,所以仅仅改变它的来源就不会有效果。将文本嵌入到10px大约在左手边。
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

我通过子类来解决这个问题UILabel和压倒一切drawTextInRect:就像这样:

- (void)drawTextInRect:(CGRect)rect {
    UIEdgeInsets insets = {0, 5, 0, 5};
    [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];}

相当于SWIFT 3.1:

override func drawText(in rect: CGRect) {
    let insets = UIEdgeInsets.init(top: 0, left: 5, bottom: 0, right: 5)
    super.drawText(in: UIEdgeInsetsInsetRect(rect, insets))}

正如您可能已经收集到的,这是对TC.的回答..与此相比,它有两个优点:

  1. 没有必要通过发送

    sizeToFit

    讯息
  2. 如果你的标签有背景,而且你不想让它缩小,它就会让标签框单独使用。


查看完整回答
反对 回复 2019-07-06
?
月关宝盒

TA贡献1772条经验 获得超5个赞

对于多行文本,可以使用NSAttributedString设置左右边距。


NSMutableParagraphStyle *style =  [[NSParagraphStyle defaultParagraphStyle] mutableCopy];

style.alignment = NSTextAlignmentJustified;

style.firstLineHeadIndent = 10.0f;

style.headIndent = 10.0f;

style.tailIndent = -10.0f;   


NSAttributedString *attrText = [[NSAttributedString alloc] initWithString:title attributes:@{ NSParagraphStyleAttributeName : style}];  


UILabel * label = [[UILabel alloc] initWithFrame:someFrame];

label.numberOfLines = 0;

label.attributedText = attrText;


查看完整回答
反对 回复 2019-07-06
  • 3 回答
  • 0 关注
  • 1294 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信