сделать пользовательский интерфейс страницы сведений о профиле похожим на скриншот?

введите описание изображения здесьЯ ищу помощь в UIBezierPath и CAShapeLayer, чтобы нарисовать половину треугольника и сделать вид профиля, как скриншот.

Я делаю код, как показано ниже, но он рисует полный треугольник.

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.red.cgColor
        triangleLayer.anchorPoint = .zero[![enter image description here][1]][1]
        triangleLayer.position = CGPoint(x: x, y: y)
        subview.layer.addSublayer(triangleLayer)

person chirag shah    schedule 31.07.2017    source источник


Ответы (1)


Может быть очень полезно дать имена точкам на вашем пути:

введите здесь описание изображения

subview.backgroundColor = .blue

let triangleLayer = CAShapeLayer()
let trianglePath = UIBezierPath()

let w = subview.bounds.size.width
let h = subview.bounds.size.height

// move to Top-Left corner
trianglePath.move(to: .zero)

// line to Top-Right corner
trianglePath.addLine(to: CGPoint(x: w, y: 0))

// line to Right-Side, 75% of height
trianglePath.addLine(to: CGPoint(x: w, y: h * 0.75))

// line to Bottom-Left corner
trianglePath.addLine(to: CGPoint(x: 0, y: h))

trianglePath.close()

triangleLayer.path = trianglePath.cgPath
triangleLayer.fillColor = UIColor.red.cgColor
triangleLayer.anchorPoint = .zero

subview.layer.addSublayer(triangleLayer)

Приведет к:

введите здесь описание изображения

person DonMag    schedule 31.07.2017