我正在尝试实现绘图功能。目前我正在使用 UIBezierPath:
@interface DrawView : UIView {
UIBezierPath *myPath;
}
@end
@implemenation DrawView
-(id)initWithFrame:(CGRect)frame {
//...normal init code
myPath = [[UIBezierPath alloc]init];
myPath.lineCapStyle = kCGLineCapRound;
myPath.lineJoinStyle = kCGLineJoinRound;
myPath.miterLimit = 0;
myPath.lineWidth = 10;
}
在touchesBegan:
我跟踪 startPoint 并调用[myPath moveToPoint:myTouch locationInView:self];
IntouchesMoved:
我调用[myPath addLineToPoint...]; [self setNeedsDisplay]
.
我的 DrawView 是 UIScrollView 的子视图。
我的问题:当我放大绘图时,它非常角落或像素化。
我想以某种方式重新绘制绘图,使其看起来既漂亮又流畅,但我不知道如何或从哪里开始。
我找到了这个简单的“解决方案”:
-(void)scrollViewDidEndZooming:(UIScrollView*)scrollView withView:(UIView*)view atScale:(float)scale {
view.layer.contentsScale = scale;
[view setNeedsDisplay];
}
当我以这种方式实现该方法时,缩放后绘图会更平滑,但应用程序变得非常缓慢和缓慢。在maximumZoomScale
滚动视图的顶部,应用程序完全崩溃。当我理解文档正确设置 contentsScale 高于 2 不是一个好主意或以任何方式更改 contensScale 不是那么好。