Iphone 如何在UIView的子类中调用UIView变量中的drawrect?

Iphone 如何在UIView的子类中调用UIView变量中的drawrect?,iphone,uiview,drawrect,Iphone,Uiview,Drawrect,我创建了UIView的一个子类,在这个类中我声明了一个UIView变量。 我想调用UIView变量的DrawRect,因为现在当我调用DrawRect时,它是在我的UIView类上绘制的,而不是UIView变量,我该怎么做呢 对不起,我的英语不好 您不调用drawRect,而是在子视图上调用setNeedsDisplay。您有一个UIViewCustomClass,其中还有一个UIView?大概是这样的: @interface MyView : UIView { AnotherView *a

我创建了UIView的一个子类,在这个类中我声明了一个UIView变量。 我想调用UIView变量的DrawRect,因为现在当我调用DrawRect时,它是在我的UIView类上绘制的,而不是UIView变量,我该怎么做呢


对不起,我的英语不好

您不调用
drawRect
,而是在子视图上调用
setNeedsDisplay

您有一个UIViewCustomClass,其中还有一个UIView?大概是这样的:

@interface MyView : UIView
{
  AnotherView *aView;
}
是吗

因此,如果要重画“aView”变量,必须重写MyView类中的setNeedsDisplay方法:

h

m

编辑: 在这里,aView也是一个自定义类(另一个视图的类型),因此您可以像我们之前对MyViewClass所做的那样重写draw rect方法:

在另一个视图m中:

@implemetation AnotherView

-(void) drawRect:(CGRect) rect
{
  //Do drawing for your aView variable ;)
}

@end

根据苹果的指导原则,您不应该直接调用drawRect(cf)

谢谢,但我如何才能使用UIView变量?,例如,我的意思是如何在我的UIView变量上画一条线?您还需要对变量进行子cass并重写drawRect方法。假设您有
UIView*子视图1
,它是
mainView
的子视图。在这种情况下,无论何时需要重新绘制
子视图1
,都可以在
main视图的实现中调用[subview1 setNeedsDisplay]。假定您的
子视图1
实现已重写
-(void)drawRect:(CGRect)rect
方法,将调用它。
@implementation MyView

- (void)setNeedsDisplay
{
  [super setNeedsDisplay];
  [aView setNeedsDisplay];
}

-(void) drawRect:(CGRect) rect
{
  //Do your own custom drawing for the current view
}

@end
@implemetation AnotherView

-(void) drawRect:(CGRect) rect
{
  //Do drawing for your aView variable ;)
}

@end