我带着
给UILabel边界Label.text = lbltext;
Label.layer.borderColor = [[UIColor grayColor] CGColor];
Label.layer.borderWidth = 2;
但文字与边框之间没有空格 那么如何在我的标签中设置像UIButton这样的插入效果?
答案 0 :(得分:20)
将标签放在容器视图中并将边框应用于容器。
答案 1 :(得分:18)
您可以继承UILabel,并覆盖以下几种方法:
第一个为您提供圆角和边框。您可以根据需要调整边框宽度,颜色等。
- (void)drawRect:(CGRect)rect
{
self.layer.cornerRadius = 4.0;
self.layer.borderWidth = 1;
[super drawRect:rect];
}
第二个允许您指定插入以将标签文本放置在远离左边框的位置。
- (void) drawTextInRect:(CGRect)rect
{
UIEdgeInsets insets = {0,5,0,5};
[super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
答案 2 :(得分:1)
或者,不使用标签,您可以使用NSString
方法sizeWithFont:forWidth:lineBreakMode:
,它返回文本的大小。然后,您可以调用NSString
drawInRect:withFont:lineBreakMode:
方法,其中rect是从sizeWithFont
方法获得的方法,增加了所需的边距。
答案 3 :(得分:1)
您还可以在文本中添加一个空格,以获得一个非常简单的解决方案:
ObjC代码(由s1m0n添加为评论)
[label setText:[NSString stringWithFormat:@" %@ ", text]];
Monotouch(C#)代码:
Label.text = " "+lbltext;
@Downvoting: 如果你投票失败,通过给出一个理由至少表现出一些尊重,这样我们都可以了解为什么这是一个糟糕的解决方案。虽然它肯定不是所有情况的通用解决方案,但在某些情况下它可能是一个非常简单的解决方案。因为边框是在Button内部创建的,所以文本“粘贴”到边框(或者甚至有重叠),添加空格可以轻松解决此问题。