我正在尝试绘制一个用户在iPad上移动手指的矩形:
ViewController接口:
@interface ViewController : UIViewController {
NSMutableArray *paths;
}
实现:
-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches) {
CGPoint location = [touch locationInView:self.view];
CGRect aRectangle = CGRectMake(location.x, location.y, 40, 40);
UIBezierPath *path = [UIBezierPath bezierPathWithRect:aRectangle];
path = [UIBezierPath bezierPathWithOvalInRect:aRectangle];
[paths addObject:path];
}
}
- (void)drawRect:(CGRect)rect {
for (UIBezierPath *path in paths) {
[path fill];
}
}
但屏幕上没有任何内容...我想也许我没有告诉视图刷新自己并拨打drawRect
,但我尝试进入iPad的主屏幕并重新进入应用程序但仍然没有显示?
(我打算使用一个点数组,但是因为CGPoint
不是一个会保留的对象,所以它不能被添加到可变数组中,并且它会在本地范围之后消失结束。它怎么可能是一个点数组呢?)
答案 0 :(得分:3)
drawRect
是来自UIView
但不是UIViewController
的方法。您需要创建自定义UIView
子类并在其中覆盖drawRect
,然后如果使用Interface Builder构建UI结构,则将自定义视图类绑定到XIB / NIB中的视图。 / p>
答案 1 :(得分:1)
首先,您应该在UIView
而不是UIViewController
中实施这些方法。
其次,永远不要自己调用drawRect!
我想也许我没有告诉视图刷新自己并打电话 的drawRect
如果您希望视图重绘下一个绘图周期/帧,请在其上调用-setNeedsDisplay。