ViewController和drawRect

时间:2010-06-24 11:34:48

标签: iphone cocoa uiviewcontroller drawrect

我有一个UIViewController,我希望它可以调用drawRect,这样我就可以在视图上绘制,但没有任何反应。

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
...code...
}

@end

和实施

#import "ViewController.h"


@implementation ViewController

-(void) drawRect:(CGRect) rect {
draw a pony
}

- (void)viewDidLoad {
}

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [super dealloc];
}

@end

但是当应用程序运行时,视图上没有小马被绘制,我做错了什么?

2 个答案:

答案 0 :(得分:6)

UIViewController没有覆盖消息drawRect。 您应该创建从UIView派生的自定义类,并在那里覆盖消息drawRect

您可以覆盖(UIView *)view的消息UIViewController并返回自己的自定义UIView或在Interface Builder中将更改类从UIView更改为自己的类。

答案 1 :(得分:0)

setNeedsDisplay上呼叫UIView,而不是ViewController,是触发和重新触发drawRect代码的一种方式,您可以有条件地发送此消息你需要更新整个视图。

您可以使用

在自定义UIView内进行调用
[self.setNeedsDisplay]

或通过使UIView成为控制器的属性并调用

从View Controller中获取
[self.myView setNeedsDisplay]