因为我是 iphone 编程的新手,所以我也做了一点编码。我从未浏览过苹果的文档。但是现在我刚刚开始阅读它,我发现一些方法对我来说非常困难,我很难实现这个,因为 SOF 是我编码的关键,这就是我问这个的原因。请告诉我如何使用 UILabel 类实例方法
– (CGRect)textRectForBounds:limitedToNumberOfLines:
– (void)drawTextInRect:
如果可能的话,提供一些代码,在此先感谢,期待您的帮助。:)
因为我是 iphone 编程的新手,所以我也做了一点编码。我从未浏览过苹果的文档。但是现在我刚刚开始阅读它,我发现一些方法对我来说非常困难,我很难实现这个,因为 SOF 是我编码的关键,这就是我问这个的原因。请告诉我如何使用 UILabel 类实例方法
– (CGRect)textRectForBounds:limitedToNumberOfLines:
– (void)drawTextInRect:
如果可能的话,提供一些代码,在此先感谢,期待您的帮助。:)
方法“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)];
}
如果要在特定矩形中绘制文本,则需要继承 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;
}
因为此方法现在返回边界的左半边矩形,所以您的文本只会在左半边矩形中绘制。