需要提示UIBezierPath.像Instagram注册视图的三角形状

Sle*_*ers 4 objective-c cashapelayer ios uibezierpath

我试图创建一个像下面图片中的instagram三角形的bezier路径,但是我一定是做错了.Bezier路径没有显示!

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.

}

-(void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];

[self drawTriangle];

}

- (IBAction)closeButton:(UIButton *)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}

- (void)drawTriangle{

UIBezierPath* trianglePath = [UIBezierPath bezierPath];
[trianglePath moveToPoint:CGPointMake(self.signUpButton.center.x, self.signUpButton.frame.origin.y + 30)];
[trianglePath addLineToPoint:CGPointMake(self.signUpButton.center.x - 10, self.imageView.frame.size.height)];
[trianglePath addLineToPoint:CGPointMake(self.signUpButton.center.x + 10, self.imageView.frame.size.height)];

UIColor *fillColor = [UIColor whiteColor];
[fillColor setFill];
UIColor *strokeColor = [UIColor whiteColor];
[strokeColor setStroke];

 [trianglePath fill];
[trianglePath stroke];

[trianglePath closePath];
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Leo*_*bus 12

Xcode 10•Swift 4.2

func drawTriangle(size: CGFloat, x: CGFloat, y: CGFloat, up:Bool) {

    let triangleLayer = CAShapeLayer()
    let trianglePath = UIBezierPath()
    trianglePath.move(to: .zero)
    trianglePath.addLine(to: CGPoint(x: -size, y: up ? size : -size))
    trianglePath.addLine(to: CGPoint(x: size, y: up ? size : -size))
    trianglePath.close()
    triangleLayer.path = trianglePath.cgPath
    triangleLayer.fillColor = UIColor.white.cgColor
    triangleLayer.anchorPoint = .zero
    triangleLayer.position = CGPoint(x: x, y: y)
    triangleLayer.name = "triangle"
    view.layer.addSublayer(triangleLayer)
}

drawTriangle(size: 12, x: view.frame.midX/2, y: view.frame.midY, up: true)
drawTriangle(size: 12, x: view.frame.midX, y: view.frame.midY, up: false)
Run Code Online (Sandbox Code Playgroud)