1

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

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

如果可能的话,提供一些代码,在此先感谢,期待您的帮助。:)

4

2 回答 2

2

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

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

bounds 接收器的边界矩形。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)];
} 
于 2012-07-04T12:16:43.887 回答
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;
}

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

于 2012-07-04T12:12:20.627 回答