2012-05-19 58 views
1

我需要知道是否有可能全局覆盖UI类的drawRect。沿着“外观”类属性的行。基本上我需要为应用程序中的所有按钮使用我自己的绘图例程。最好我不想继承,并且必须在故事板中的每个按钮上设置类的类型。是否有可能重写没有继承的类的drawRect?

回答

1

使用类属

@interface UIView (UIViewDR) 
- (void)drawRect:(CGRect)rect; 
@end 


@implementation UIView (UIViewDR) 
- (void)drawRect:(CGRect)rect { /* your implementation */ return; } 
@end 

你可能会使用其他类则UIView的;就像一个按钮建立在上面的东西。

+0

出于兴趣,任何人都不知道这将如何对继承做出反应。例如,如果我为UI按钮实现了这一点,那么我也想说创建一个从UIButton派生的Tab按钮,我的新TabButton的drawRect优先? – Slappy

+2

在子类上定义的方法总是优先。如果你想要父方法,那么你必须显式调用[super ...](典型的例子是init:方法)。 – GoZoner

0

你看过UIAppearance吗?我还没有研究过解决像你以前那样的问题,但我在谷歌上探索了一下,看起来UIAppearance似乎可以做到这一点?

+0

UIAppearance只允许您修改班级属性。它并不像我所说的那样让你伤心地重写或委托方法。 – Slappy

相关问题