我自定义了一个UIView的子类并创建了DrawRect方法,但是在ViewController里用SetNeedDisplay方法想调用DrawRect,结果没有显示DrawRect方法,该怎样调用才能把DrawRect方法显示出来?求大神告知,谢谢!

解决方案 »

  1.   

    drawRect方法,决定了View长啥样默认情况下,draRect: 方法啥都不做,交给UIView的子类去实现这个方法,让子类有不同的样子。例如,UIButton的drawRect:方法可以绘制一个圆角的四方形,并在正中显示标题字符串。当你覆盖drawRect方法的时候,系统会为View准备一个graphics context, 接着系统会激活这个context,然后调用需要绘图的UIView对象的drawRect方法。我们可以通过UIGraphicsGetCurrentContext方法来获取已经激活的context, 这个context的类型就是CGContextRef,它负责合并然后生成一个image。这个image就是View最终的样子。
    (void)drawRect:(CGRect)dirtyRect {
      CGContextRef ctx = UIGraphicsGetCurrentContext();   CGRect bounds = [self bounds];  center.x = bounds.origin.x + bounds.size.width / 2.0;   center.y = bounds.origin.y + bounds.size.height / 2.0;  float maxRadius = hypot(bounds.size.width, bounds.size.height) / 4.0;  CGContextStrokePath(ctx);
    }
      

  2.   

    UIViewController不是UIView的子类。
    UIViewController和Uiview是两个不同的类,UIViewController是视图控制器 ,而UIView是视图,也就是说,UIViewController是控制UIView的。
      

  3.   

    谢谢热心回答。
    我把当前运行的类改为这个自定义的类(自定义类基于UIView),根据log输出内容来看,虽然是运行自定义的类,但是自定义类里面的方法没有运行,还是显示ViewController里的方法,这是怎么回事?只有把ViewController里面的方法都忽略了后才显示自定义类里方法,该怎样让ViewController和自定义类的方法同时运行?
      

  4.   


    你ViewController里面的firstview把自定义的视图覆盖掉了而已
      

  5.   

    你是在看iOS programming第四版吧,这是同心圆视图是不?你遇到的问题表达不清楚,我自学时也是用这本书,感觉你是不是现在在做触摸屏幕时不能让它改变颜色是么?还是别的?
      

  6.   

    你是在看iOS programming第四版吧,这是同心圆视图是不?你遇到的问题表达不清楚,我自学时也是用这本书,感觉你是不是现在在做触摸屏幕时不能让它改变颜色是么?还是别的?是的,就是iOS Programming的第四版里画同心圆的那个章节。书太老了,照着书本里的方法实在是实现不了,卡在这里好长时间,郁闷啊!
      

  7.   

    你在哪里创建的自定义的view视图?
      

  8.   

    在Hypnosis里创建的,继承UIView
      

  9.   

    需要在viewController中设置自定义UIView的frame