Tag: uibezierpath

UIBezierPath子类初始化程序

我试图创build一个UIBezierPath的子类来添加一些对我有用的属性。 class MyUIBezierPath : UIBezierPath { var selectedForLazo : Bool! = false override init(){ super.init() } /* Compile Error: Must call a designated initializer of the superclass 'UIBezierPath' */ init(rect: CGRect){ super.init(rect: rect) } /* Compile Error: Must call a designated initializer of the superclass 'UIBezierPath' */ init(roundedRect: CGRect, cornerRadius: CGFloat) { super.init(roundedRect: roundedRect, cornerRadius: […]

在Swift中去除绘制UIBezierPath平滑线的滞后延迟

下面的代码通过覆盖触摸绘制平滑的曲线,但是有明显的滞后或延迟。 该代码使用addCurveToPoint并在每触摸4个点后调用setNeedsDisplay ,由于graphics跟不上手指的移动,导致出现跳动的外观。 为了消除滞后或潜在的等待时间,可以使用addQuadCurveToPoint和addLineToPoint临时填充触摸点1,2,3(触及点4)。 在代码中如何实际实现,通过在显示最终的Curved行之前使用临时的Line和QuadCurved行来消除感知的滞后? 如果下面的类被附加到一个UIView (例如viewOne或self ),那么在touchesEnded之后,如何将绘图的副本复制到另一个UIView (例如viewTwo) touchesEnded ? // ViewController.swift import UIKit class drawSmoothCurvedLinesWithLagging: UIView { let path=UIBezierPath() var incrementalImage:UIImage? var points = [CGPoint?](count: 5, repeatedValue: nil) var counter:Int? var strokeColor:UIColor? required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } override func drawRect(rect: CGRect) { autoreleasepool { incrementalImage?.drawInRect(rect) strokeColor = UIColor.blueColor() strokeColor?.setStroke() path.lineWidth […]

如何在多点触控序列中有效处理UITouches

我正在使用多点触控书写,所以基本上我正在做的是,我正在写手与支持,因为通常,它的用户如何写,我跟着这个链接如何忽略多点触控顺序中的某些UITouch点 一切都工作正常单触,但他们是一些问题,当我用手触摸屏幕,即多个UItouches写下面是我的代码 触摸开始,我经历了所有的触摸,我发现触摸与最高的位置,下面是我的代码 以下是我的代码 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch* topmostTouch = self.trackingTouch; for (UITouch *touch in touches) { ctr = 0; touchStartPoint1 = [touch locationInView:self]; if(!topmostTouch || [topmostTouch locationInView:self].y > touchStartPoint1.y) { topmostTouch = touch; pts[0] = touchStartPoint1; } } self.trackingTouch = topmostTouch; } 在感动的时候,我只会采取self.trackingTouch,这是我触摸到的 我的触动移动下面的代码 -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { if(self.trackingTouch== nil) { […]

联盟UIBezierPaths而不是安装path

我有一个应用程序,我采取UIBezierPath并通过一系列appendPath:调用将其用作画笔。 经过几次,并与真正复杂的刷形状内存耗尽,应用程序停下来。 我真正想做的是完全像Paint Code一样的联合,但我找不到任何这样做的方式。 我将如何去结合两个或两个以上的UIBezierPath? 编辑: 这是我想要dynamic实现的一个视觉。 在“绘制代码”中,您需要两条path,并将它们重叠: 但我想合并/联合成一个新的单一path,如: 请注意,在代码的底部面板现在有一个单一的形状代码,这就是我想能够以编程方式可能有1000个原始path。

用UIBezierPath绘制graphics曲线

我在我的应用程序中绘制图表。 我的问题是,我想绘制线连接顶点作为曲线。 目前我正在使用UIBezierPath的函数addLineToPoint:绘制它们。 我想绘制他们作为曲线。 我很清楚, UIBezierPath有两个function来支持这个function。 三次曲线: addCurveToPoint:controlPoint1:controlPoint2: : addCurveToPoint:controlPoint1:controlPoint2: : addCurveToPoint:controlPoint1:controlPoint2:二次曲线: addQuadCurveToPoint:controlPoint: 但问题是我没有控制点。 我所拥有的是两个终点。 我也没有find确定控制点的方法/公式。 有人能帮我一下吗? 我会感激,如果有人可以build议一些替代…

如何使用UIBezierPath裁剪图像?

我想从UIBezierpath闭path中获取图像(请参阅图像)。 我使用drawRect方法在UIView上绘制图像,并绘制线条使用drawRect方法。 我怎样才能得到特定的闭path图像? 请帮帮我。 提前致谢。 这个代码用于绘制贝塞尔path。 UIBezierPath *aPath = [UIBezierPath bezierPath]; for (NSString *pointString in pointArray) { if ([pointArray indexOfObject:pointString] == 0) [aPath moveToPoint:CGPointFromString(pointString)]; else [aPath addLineToPoint:CGPointFromString(pointString)]; } [aPath closePath];

UIBezierPath带有圆边的三angular形

我devise了这个代码来生成一个Bezierpath,用作CAShapeLayer的path来掩盖UIView(视图的高度和宽度都是可变的) 这段代码会生成一个尖锐的三angular形,但是我想把它变成圆angular。 我花了好2个小时试图与addArcWithCenter… , lineCapStyle和lineJoinStyle等工作,但似乎没有为我工作。 UIBezierPath *bezierPath = [UIBezierPath bezierPath]; CGPoint center = CGPointMake(rect.size.width / 2, 0); CGPoint bottomLeft = CGPointMake(10, rect.size.height – 0); CGPoint bottomRight = CGPointMake(rect.size.width – 0, rect.size.height – 0); [bezierPath moveToPoint:center]; [bezierPath addLineToPoint:bottomLeft]; [bezierPath addLineToPoint:bottomRight]; [bezierPath closePath]; 所以我的问题是,我将如何绕过UIBezierPath中的三angular形的所有边缘(我是否需要子层,多个path等)? 注意我没有绘制这个BezierPath,所以所有CGContext…函数drawRect不能帮助我:( 谢谢!

绘制类绘制直线而不是曲线

我有下面的代码,使用UIBezierPath绘制线条。 代码使用addCurveToPoint ,它应该使用三次bezierpath绘制曲线,但代码的最终结果是绘制连接的直线,但addLineToPoint没有被使用。 可能会发生什么,为什么不是绘制曲线的代码? import UIKit class DrawingView: UIView, UITextFieldDelegate { // Modifiable values within the code let lineWidth : CGFloat = 2.0 let lineColor = UIColor.redColor() let lineColorAlpha : CGFloat = 0.4 let shouldAllowUserChangeLineWidth = true let maximumUndoRedoChances = 10 var path = UIBezierPath() var previousImages : [UIImage] = [UIImage]() // Represents current image […]

沿着贝塞尔path放置图像

有谁知道如何沿着贝塞尔path放置图像? 我可以写好path并沿pathanimation一个精灵,但是我想让path成为一系列箭头而不是虚线。 我认为必须有一种方法可以在path上添加箭头图像,但无法find它。 path也是弯曲的: UIBezierPath * path = [UIBezierPath bezierPath]; [path moveToPoint:startingPoint]; [path addCurveToPoint:endPoint controlPoint1:controlPoint1 controlPoint2:controlPoint2];

如何用渐变填充UIBezierPath?

我用UIBezierPath绘制了一个图。 我可以使用纯色填充graphics下的区域,但是我想用渐变填充graphics下面的区域,而不是使用纯色。 但我不知道如何使梯度适用于graphics,而不是整个视图,我已经阅读了几个问题,但没有发现任何适用的。 这是主要的graphics绘制代码: // Draw the graph UIBezierPath *barGraph = [UIBezierPath bezierPath]; barGraph.lineWidth = 1.0f; [blueColor setStroke]; TCDataPoint *dataPoint = self.testData[0]; CGFloat x = [self convertTimeToXPoint:dataPoint.time]; CGFloat y = [self convertDataToYPoint:dataPoint.dataUsage]; CGPoint plotPoint = CGPointMake(x,y); [barGraph moveToPoint:plotPoint]; for (int ii = 1; ii < [self.testData count]; ++ii) { dataPoint = self.testData[ii]; x = [self […]