如何使用UILabel实例方法

时间:2012-07-04 11:41:45

标签: iphone objective-c ios5 uilabel

我刚接触iphone编程, 我也在其中做了一点点编码。 我从来没有浏览过苹果的文档。 但现在我开始阅读它,我发现一些方法对我来说非常困难, 我很难实现这一点,因为SOF是我编码的关键, 这就是我问这个的原因。请告诉我如何使用UILabel类  实例方法

– (CGRect)textRectForBounds:limitedToNumberOfLines:
– (void)drawTextInRect:

如果可能的话,提供一些代码,提前谢谢,期待你的帮助。:)

2 个答案:

答案 0 :(得分:2)

方法“textRectForBounds:limitedToNumberOfLines:”返回标签文本的绘图矩形。

语法: (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines

边界 接收器的边界矩形。 numberOfLines 用于标签的最大行数。值0表示没有最大行数,矩形应包含所有文本

不应该直接调用此方法,因为它应该被子类覆盖。

可以通过以下方式重叠:

- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines (NSInteger)numberOfLines
{
return CGRectInset(bounds, MARGIN, MARGIN);
}

- (void)drawTextInRect:(CGRect)rect
{
[super drawTextInRect: CGRectInset(self.bounds, MARGIN, MARGIN)];
} 

答案 1 :(得分:1)

如果要在特定矩形中绘制文本,则需要继承UILabel并覆盖– (CGRect)textRectForBounds:limitedToNumberOfLines:。请记住使用您的子类而不是UILabel。

例如,假设我想仅在标签的左半部分绘制文字:

- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines {
   //Original method returns the bounds, so let's find the left half of the bounds
   CGRect leftHalfRect = CGRectMake(0, 0, self.bounds.size.width/2, self.bounds.size.height);
   return leftHalfRect;
}

因为此方法现在返回边界的左半部分,所以文本只会在左半部分中绘制。