Tag: cashapelayer

如何精确地在图像模式上绘制线条

我有一个UIImageView。 里面,我画线用户触摸事件。 问题是UIImageview任何位置都可以绘制UIImageview ,但是我只喜欢用图像模式绘制线条。 例如,看这个图像。 我只需要在图像模式上画线。 这是我的代码: -(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { UITouch *touch = [[event allTouches] anyObject]; touchPoint = [touch locationInView:self.imgColor]; UIBezierPath *path = [UIBezierPath bezierPath]; [path moveToPoint:CGPointMake(touchPoint.x,touchPoint.y)]; [path addLineToPoint:CGPointMake(startingPoint.x,startingPoint.y)]; startingPoint=touchPoint; CAShapeLayer *shapeLayer = [CAShapeLayer layer]; shapeLayer.path = [path CGPath]; shapeLayer.strokeColor = [[UIColor blueColor] CGColor]; shapeLayer.lineWidth = 3.0; shapeLayer.fillColor = [[UIColor redColor] CGColor]; […]

iOS – 使用CAShapeLayer绘制圆的简单方法

在如何绘制一个光滑的圆圈 , …绘制圆圈和…绘制填充圈子的问题和答案是非常广泛的,包含很多不必要的步骤,使用的方法并不总是最容易重新创build或pipe理。 什么是一个简单的方法来绘制一个圆圈,并将其添加到我的UIView ?

触摸移动在CAShapeLayer绘图慢/ laggy

正如在先前的StackOverflow问题中向我推荐的那样,我试图改进我的绘图方法,让我的用户在UIView中绘制线条/点。 我现在试图绘制使用CAShapeLayer而不是dispatch_async。 然而,这一切都正常工作,但是,在触摸移动的同时不断移动到CAShapeLayer中变得缓慢,path滞后,而我的旧的(效率低下的我被告知)代码工作得非常stream畅和快速。 你可以看到我的旧代码注释如下。 有什么办法来改善我想要做的事情吗? 也许我正在过度看待一些事情。 我会很感激提供的任何帮助。 码: @property (nonatomic, assign) NSInteger center; @property (nonatomic, strong) CAShapeLayer *drawLayer; @property (nonatomic, strong) UIBezierPath *drawPath; @property (nonatomic, strong) UIView *drawView; @property (nonatomic, strong) UIImageView *drawingImageView; CGPoint points[4]; – (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; self.center = 0; points[0] = [touch locationInView:self.drawView]; if (!self.drawLayer) […]

UIImagePickerController编辑视图圆形覆盖

我已经能够完成我一直想要完成的工作了,那就是复制iOS内置的圆形照片裁剪器,用于内置的联系人应用程序。 然而,我坚持试图让我的CAShapeLayers正确的做出。 我试图做一个透明的320像素直径的圆圈,其余的视图充满了0.9 alpha黑色背景。 圆形和矩形是在正确的位置,但是,圆形是不完全透明的,就像我需要的那样。 我失去了如何解决这个问题。 我感谢您的帮助! 代码和屏幕截图: – (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated { if ([navigationController.viewControllers count] == 3) { CGRect screenRect = [[UIScreen mainScreen] bounds]; CGFloat screenHeight = screenRect.size.height; UIView *plCropOverlay = [[[viewController.view.subviews objectAtIndex:1]subviews] objectAtIndex:0]; plCropOverlay.hidden = YES; CAShapeLayer *circleLayer = [CAShapeLayer layer]; if (screenHeight == 568) { [circleLayer setPosition:CGPointMake(0.0f,124.0f)]; } else { […]

iOS的animation/变形形状从圆形到方形

我试图把一个圆圈变成一个正方形,反之亦然,我快到了。 然而它并不像预期的那样animation。 我希望广场的所有angular落都能同时进行animation/变形,但我得到的是以下内容: 我使用CAShapeLayer和CABasicAnimation为了animation形状属性。 以下是我如何创build圆path: – (UIBezierPath *)circlePathWithCenter:(CGPoint)center radius:(CGFloat)radius { UIBezierPath *circlePath = [UIBezierPath bezierPath]; [circlePath addArcWithCenter:center radius:radius startAngle:0 endAngle:M_PI/2 clockwise:YES]; [circlePath addArcWithCenter:center radius:radius startAngle:M_PI/2 endAngle:M_PI clockwise:YES]; [circlePath addArcWithCenter:center radius:radius startAngle:M_PI endAngle:3*M_PI/2 clockwise:YES]; [circlePath addArcWithCenter:center radius:radius startAngle:3*M_PI/2 endAngle:M_PI clockwise:YES]; [circlePath closePath]; return circlePath; } 这是方形path: – (UIBezierPath *)squarePathWithCenter:(CGPoint)center size:(CGFloat)size { CGFloat startX = center.x-size/2; CGFloat […]

iOS中的自定义图像蒙版

我有掩盖图像的问题。 我做游戏“拼图”,必须制作自定义图像。 我发现并尝试了2种自定义裁剪方式: 使用CALayer.mask属性。 使用UIImage.mask属性。 在第一个选项我创build我的自定义path,然后将其分配给CAShapeLayer.path属性,然后将CAShapeLayer分配给CALayer.mask属性。 最后,我有自定义裁剪图像。 在第二个选项中,我首先使用CGImageMaskCreate()方法(我使用以前创build的黑色面具图像拼图),然后CGContextClipToMask() 。 在任何一个选项我都有性能问题(主要是当我裁剪图像成16个谜题,并在屏幕上拖动)。 有没有其他的方法来自定义的方式来裁剪图像。 (我不知道如何解决性能问题)。 提前致谢。

如何用CAShapeLayer和UIBezierPath绘制一个平滑的圆?

我试图通过使用CAShapeLayer并在其上设置循环path来绘制一个描边圈。 但是,这种方法在渲染到屏幕上的准确性比使用borderRadius时要less得多,或者直接在CGContextRef中绘制path。 以下是所有三种方法的结果: 请注意,第三个渲染效果不好,特别是在顶部和底部的中风。 我已经将contentsScale属性设置为[UIScreen mainScreen].scale 。 这是我的这三个圈子的绘图代码。 缺less什么使CAShapeLayer平滑绘制? @interface BCViewController () @end @interface BCDrawingView : UIView @end @implementation BCDrawingView – (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { self.backgroundColor = nil; self.opaque = YES; } return self; } – (void)drawRect:(CGRect)rect { [super drawRect:rect]; [[UIColor whiteColor] setFill]; CGContextFillRect(UIGraphicsGetCurrentContext(), rect); CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), NULL); [[UIColor redColor] setStroke]; CGContextSetLineWidth(UIGraphicsGetCurrentContext(), […]

如何用颜色渐变描边绘制圆形path

我想在iOS和MacOS上用下面的图片绘制一个带有颜色渐变笔划的圆: 是否有可能用CAShapeLayer或NSBezierPath / CGPath ? 或者其他方式?

如何使我的UIBezierPathanimation与CAShapeLayer?

我试图animation一个UIBezierPath,我已经安装了一个CAShapeLayer来尝试去做。 不幸的是,animation不能正常工作,我不确定任何图层是否有任何影响(因为代码在做图层之前做的是相同的事情)。 这里是实际的代码 – 会爱上任何帮助。 Draw2D是embedded在UIViewController中的UIView的一个实现。 所有的绘图都在Draw2D类中进行。 对[_helper createDrawing …]的调用只是用点来填充_uipathvariables。 Draw2D.h定义了以下属性: #define defaultPointCount ((int) 25) @property Draw2DHelper *helper; @property drawingTypes drawingType; @property int graphPoints; @property UIBezierPath *uipath; @property CALayer *animationLayer; @property CAShapeLayer *pathLayer; – (void)refreshRect:(CGRect)rect; 以下是实际执行情况: // // Draw2D.m // Draw2D // // Created by Marina on 2/19/13. // Copyright (c) 2013 Marina. All rights […]

如何animationCAShapeLayerpath和fillColor

如何animationCAShapeLayerpath和fillColor? 如何animationstrokeEnd以显示正在绘制的path? 以及如何animationfillColor?