我正在尝试缩进UILabel中的文本,在显示背景颜色的文本周围留下一些边距。根据建议here,我已经覆盖textRectForBounds:limitedToNumberOfLines:
,如此:
- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines
{
CGRect intermediate = CGRectMake(bounds.origin.x+MARGIN,bounds.origin.y+MARGIN,bounds.size.width-2*MARGIN,bounds.size.height-2*MARGIN);
return [super textRectForBounds:intermediate limitedToNumberOfLines:numberOfLines];
}
但无论我做什么,文字都会紧贴矩形的左边界。看起来好像绘图忽略了返回的CGRect的原点部分(尽管它似乎是在考虑宽度部分,好像我将中间的宽度减少到例如bounds.size.width-200
,textRectForBounds返回的矩形适当地变窄了文本是在一个很长的小列中绘制的。)
那么:我需要对UILabel
做些什么来使绘图尊重textForRectBounds
- return-rect的origin.x和origin.y?如果我能提供帮助,我宁愿不覆盖UILabel
的{{1}}。
更新:这是很久以前的事了,我不记得为什么其他问题对我不起作用。我相信这是因为我试图让drawTextInRect
有多行,而解决方案here在这种情况下不起作用。
答案 0 :(得分:8)
我认为你应该像这样覆盖textRectForBounds:limitedToNumberOfLines:
和drawTextInRect:
:
- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines
{
return CGRectInset(bounds, MARGIN, MARGIN);
}
- (void)drawTextInRect:(CGRect)rect
{
[super drawTextInRect: CGRectInset(self.bounds, MARGIN, MARGIN)];
}
答案 1 :(得分:0)
查看文档,它可能会有所帮助。对super的调用可能不会返回你假设的值。
祝你好运!您不应该调用此方法 直。这种方法应该只是 被想要的子类覆盖 改变接收者的界限 执行任何其他之前的矩形 计算。使用中的值 numberOfLines参数限制 返回的矩形的高度为 指定的文本行数。 要调用此方法,请执行此操作 必须事先调用sizeToFit 或sizeThatFits:方法。注意 UITableViewCell对象中的标签是 根据单元尺寸确定尺寸, 而不是要求的尺寸 这个的默认实现 方法返回原始边界 矩形。