我有一个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
但是当应用程序运行时,视图上没有小马被绘制,我做错了什么?
答案 0 :(得分:6)
UIViewController
没有覆盖消息drawRect
。
您应该创建从UIView
派生的自定义类,并在那里覆盖消息drawRect
。
您可以覆盖(UIView *)view
的消息UIViewController
并返回自己的自定义UIView
或在Interface Builder中将更改类从UIView
更改为自己的类。
答案 1 :(得分:0)
在setNeedsDisplay
上呼叫UIView
,而不是ViewController
,是触发和重新触发drawRect
代码的一种方式,您可以有条件地发送此消息你需要更新整个视图。
您可以使用
在自定义UIView
内进行调用
[self.setNeedsDisplay]
或通过使UIView
成为控制器的属性并调用
[self.myView setNeedsDisplay]