【问题标题】:How to Use UILabel instance Method如何使用 UILabel 实例方法
【发布时间】:2012-07-04 11:41:44
【问题描述】:

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

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

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

【问题讨论】:

  • 这个问题太宽泛了。您几乎是在要求有关 Objective-c 的教程。准确告诉我们您要完成的工作,然后我们可以为您提供帮助。
  • @sosborn 我只是问我可以通过使用这些方法做什么,感谢您的回复。
  • 鉴于方法的名称以及文档对它们的评价,您认为它们会做什么?
  • @sosborn 我想使用 - (void)drawTextInRect: 对于我的 UILabel,我没有得到文档中关于它们的内容。我该如何使用它?
  • 如前所述:“准确告诉我们您想要完成的工作,然后我们可以为您提供帮助。”

标签: iphone objective-c ios5 uilabel


【解决方案1】:

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

语法: (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)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)];
} 

【讨论】:

  • 感谢您的回复!但如果您知道,请回答我上面在 cmets 中提出的问题!
【解决方案2】:

如果您想在特定的矩形中绘制文本,您需要继承 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;
}

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

【讨论】:

  • 这可能有点奇怪,但如果可能的话,请解释一下,如果我在一个视图控制器类中有标签,那么如何为文本实现此方法。请简要解释一下,感谢您的帮助和回复.
  • 您应该花一些时间阅读一些 Objective-C 教程,尤其是关于子类化的教程。这是一个核心概念,很明显您对此并不满意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多