UILabel插入效果可能吗?

时间:2011-07-28 06:44:08

标签: iphone xcode4 uilabel

我带着

给UILabel边界
Label.text = lbltext;
Label.layer.borderColor = [[UIColor grayColor] CGColor];
Label.layer.borderWidth = 2;

但文字与边框之间没有空格 那么如何在我的标签中设置像UIButton这样的插入效果?

4 个答案:

答案 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内部创建的,所以文本“粘贴”到边框(或者甚至有重叠),添加空格可以轻松解决此问题。