问题
I have a UIViewController and I would like it to call drawRect so i can draw on the view but nothing happens.
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
...code...
}
@end
and the implementation
#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
But no pony gets drawn on the view when the app is run, what do i do wrong?
回答1:
The UIViewController don't have overridden message drawRect.
You should create custom class derived from UIView and override message drawRect there.
You can override message (UIView *)view for UIViewController and return own custom UIView or in Interface Builder change class from UIView to own class.
回答2:
Calling setNeedsDisplay on your UIView, not the ViewController, is one way of triggering and re-triggering your drawRect code, and you can send this message conditionally whenever you need to update the entire view.
You can call it within a custom UIView using
[self.setNeedsDisplay]
or from the View Controller by making the UIView a property of the controller and calling
[self.myView setNeedsDisplay]
来源:https://stackoverflow.com/questions/3109529/viewcontroller-and-drawrect