我有一个包含相当大的表单的应用程序。我将UILabel分类,以便在表单标签中保持一致性。然而,一些标签将会是带背景色的分节符,并且需要缩进。iOS:继承UILabel并更新其缩进
我知道我可以在乘坐UILabel的缩进设置时,它实例通过使用此代码:
- (void)drawTextInRect:(CGRect)rect {
UIEdgeInsets insets = {0, 5, 0, 5};
return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
但会增加插图到所有标签。不是我想要的。
所以我所做的就是写了一个自定义的方法:
- (void) makeInsets
{
CGRect rect = self.frame;
if (hasInset) {
UIEdgeInsets insets = {0, 5, 0, 5};
return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
} else {
UIEdgeInsets insets = {0, 0, 0, 0};
return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
}
问题与是的UILabel绘制后,它发生。我尝试了[UILabelSubclass setNeedsDisplay:YES]
,但得到setNeedsDisplay
方法的“无可见接口”错误。有没有一种方法可以用我自定义的覆盖现有插图?
我会给你所选的答案,因为我传递了布尔属性(hasInset),所以你提供的东西实际上更好地解决了我的问题。但其他用户确实回答了我的setNeedsDisplay问题。感谢您的推动。 – PruitIgoe
是的,我想你既然已经子类化了UILabel ......为什么不只是调整你的代码,这样你就可以避免在外部调用setNeedsDisplay。现在你的视图代码会更具可读性:) – jerrylroberts