我有一个包含相当大表格的应用程序。我对 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
。有没有办法可以用我的自定义插图覆盖现有的插图?