2

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

对不起,我的英语不好。

4

2 回答 2

5

你不打电话drawRect,你打电话setNeedsDisplay给你的子视图。

于 2012-10-24T08:37:02.813 回答
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 方法:

在另一个视图.m 中:

@implemetation AnotherView

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

@end

根据苹果指南,您永远不要直接调用 drawRect (参见文档

于 2012-10-24T08:39:22.360 回答