草庐IT

UIBezierpath

全部标签

ios - UIBezierPath - 添加圆角

我正在使用UIBezierPath绘制一条曲线。但是曲线有效,我无法弯曲线的边缘。如果您查看曲线的顶端/底端,您会发现边缘变平了,这不是我想要的。有没有办法使边缘弯曲?我正在使用一个简单的UIBezierPath来绘制一个(几乎)半圆。这创建了我想要的曲线形状:CAShapeLayer*circle=[CAShapeLayerlayer];circle.path=[UIBezierPathbezierPathWithArcCenter:CGPointMake(0,0)radius:70startAngle:1.0472endAngle:5.23599clockwise:NO].CGPa

ios - 可缩放 View 中的 UIbezier 路径

我在可缩放的UIView(pdf阅读器的绘图层)中绘制贝塞尔曲线。当我放大文档时,UIView也放大了,但是所有的绘图和线条看起来像素化了很多。有没有办法在没有太多像素化的情况下渲染这些路径?它假设贝塞尔曲线路径是基于矢量的...提前致谢! 最佳答案 您是正确的,UIBezierPath是基于向量的。但是,当您将路径绘制到View中时,它会使用View层上的contentScale属性来确定绘制时要使用的细节量。您可以做的是当用户完成缩放时,将内容比例设置为正确的量。drawingView.layer.contentScale=[[

ios - 完全删除 UIBezierPath 和 CAShapeLayer 绘制的项目

在纵向模式下(第一次绘图)旋转成横屏后,为什么是旧的形状:我正在使用UIBezierPath和CAShapeLayer在自定义UIView层中绘制圆和线。问题是尽管能够在设备旋转后成功绘制新的圆圈和线条,但我无法删除旧绘制的形状。设备旋转后绘制的新形状是完美的,我只需要从屏幕上移除那些粘在屏幕上的旧形状。附上图片。 最佳答案 您可以删除之前的CAShapeLayer(使用removeFromSuperlayer)或者替换之前的CAShapeLayer的path.您似乎在添加一个新层而不删除旧层,但当然如果没有源代码就无法分辨。

iphone - 绘制动画

我正在创建一个简单的应用程序,当用户按下按钮时,将在屏幕上绘制一系列线条,用户将能够实时看到绘制的这些线条(几乎像动画一样)。我的代码看起来像这样(已简化):UIGraphicsBeginImageContext(CGSizeMake(300,300));CGContextRefcontext=UIGraphicsGetCurrentContext();for(inti=0;i我的问题是:1)一旦用户按下按钮,UIThread就会阻塞,直到绘制完成。2)我无法一次在屏幕上绘制一条线-我已经尝试直接在循环内设置UIImage并尝试在循环内设置图层内容。如何解决这些问题?

iphone - 绘制末端渐变的 UIBezierPath(渐变)

我正在尝试绘制一个在两端淡出的UIBezierPath-从alpha0到1然后回到0。我基本上希望能够从drawRect中在UIBezierPath中绘制渐变。编辑:这是我想要达到的效果: 最佳答案 使用-strokeWithBlendMode:alpha:怎么样?与某种不断增加/减少alpha值直到达到1的循环相结合(并且增量决定了“褪色”段的长度)应该有效。参见here 关于iphone-绘制末端渐变的UIBezierPath(渐变),我们在StackOverflow上找到一个类似的

ios - UIBezierPath 简单矩形

我只想使用以下函数在View中绘制一个简单的矩形:-(void)drawRect:(CGRect)rect{[superdrawRect:rect];if(self.drawTextBouble){[[UIColorblueColor]setFill];UIBezierPath*aPath=[UIBezierPathbezierPathWithRoundedRect:CGRectMake(40,0,230,120)cornerRadius:12.0];[aPathfill];}}上面的代码用纯黑色背景填充View,矩形之外是不透明的。我该如何解决这个问题?编辑:下面的解决方案有效,但这

ios - 如何用渐变填充 UIBezierPath?

我使用UIBezierPath绘制了一个图形。我可以用纯色填充图形下方的区域,但我想用渐变而不是纯色填充图形下方的区域。但是我不确定如何使渐变仅适用于图形而不适用于整个View,我已经阅读了一些问题但没有找到任何适用的内容。这是主要的图形绘制代码://DrawthegraphUIBezierPath*barGraph=[UIBezierPathbezierPath];barGraph.lineWidth=1.0f;[blueColorsetStroke];TCDataPoint*dataPoint=self.testData[0];CGFloatx=[selfconvertTimeTo

ios - 使用 CAShapeLayer 对象用 Bezierpath 画一条线

我正在制作一个图像编辑器,它可以创建不同形状的对象,例如圆形、三角形和正方形,它们也可以更新或删除。所以我使用CAShapeLayer创建形状对象。现在我还想在图像上画一条线,它也可以更新或删除,所以我使用bezierpath和CAShapeLayer来创建线,它工作正常。但是现在的问题是,当我想选择任何现有的线时,可以选择任何靠近线工具的地方,因为CAShapeLayer还设置了填充区域,这将是从起点到终点的直线.我的问题是如何使用CAShapeLayer创建没有填充区域的线。这是我创建行的代码:CAShapeLayer*line=[CAShapeLayerlayer];//Usin

ios - 使用closePath函数关闭贝塞尔路径和手动关闭有什么区别?

我正在尝试使用UIBezierPath制作一个矩形。我采用了两种不同的方式来绘制它。另外,我将描边宽度增加到25像素。第一种方法:使用closePathUIBezierPath*bpath=[UIBezierPathbezierPath];[bpathmoveToPoint:CGPointMake(x,y)];[bpathaddLineToPoint:CGPointMake(x+w,y)];[bpathaddLineToPoint:CGPointMake(x+w,y+h)];[bpathaddLineToPoint:CGPointMake(x,y+h)];[bpathclosePath

ios - UIBezierPath 与核心数据的持久性

我正在开发一个用户可以用手指在屏幕上绘图的应用程序。我为此使用UIBezierPath。我需要保存这个数据,它是一个包含多个BezierPath对象的NSArray。最好的方法是什么?存储在核心数据中,使用NSData存储在文件中?非常感谢。 最佳答案 您是否期望必须存储多个对象?您是否需要能够根据某些过滤器或顺序获取它们?我建议使用CoreData来为自己节省大量打包/解包数据的工作。没有理由将其存储在文件中。编辑:正如其他答案所说,您只需将其存档到NSData即可。UIBezierPath类遵守NSCoding协议(protoc