我刚接触iphone编程, 我也在其中做了一点点编码。 我从来没有浏览过苹果的文档。 但现在我开始阅读它,我发现一些方法对我来说非常困难, 我很难实现这一点,因为SOF是我编码的关键, 这就是我问这个的原因。请告诉我如何使用UILabel类 实例方法
– (CGRect)textRectForBounds:limitedToNumberOfLines:
– (void)drawTextInRect:
如果可能的话,提供一些代码,提前谢谢,期待你的帮助。:)
答案 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;
}
因为此方法现在返回边界的左半部分,所以文本只会在左半部分中绘制。