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

时间:2012-10-24 08:29:24

标签: iphone uiview drawrect

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

抱歉我的英语不好。

2 个答案:

答案 0 :(得分:5)

您没有致电drawRect,而是在子视图上致电setNeedsDisplay

答案 1 :(得分:3)

你有一个UIViewCustomClass,其中还有一个UIView?像这样:

@interface MyView : UIView
{
  AnotherView *aView;
}

那是对的吗?

因此,如果要重绘“aView”变量,则必须覆盖MyView类中的setNeedsDisplay方法:

·H

@interface MyView : UIView
{
      AnotherView *aView;
}

- (void)setNeedsDisplay;
-(void) drawRect:(CGRect) r;

@end

的.m

@implementation MyView

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

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

@end

修改 这里,aView也是一个自定义类(AnotherView的类型),所以你可以像我们预先使用MyViewClass一样覆盖draw rect方法:

在AnotherView.m中

@implemetation AnotherView

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

@end

根据苹果指南,你不应该直接调用drawRect(参见documentation