我正在尝试在一个圆中绘制“饼图切片”,其中一条边缘从顶部到中心是垂直的,一条边缘是从顶部到该点的圆弧,最后一条边缘是弧的末端到中心。
这是我目前正在使用的代码:
class ArcView : UIView {
override func draw(_ rect: CGRect) {
let x1 = rect.minX
let x2 = rect.maxX
let y1 = rect.minY
let y2 = rect.maxY
let arc_radius = self.superview!.frame.width/2
let delta_y = y2-y1
let delta_x = x2-x1
let angle = asin(delta_x/arc_radius)
let center = CGPoint(x:x1, y:y2)
let top = CGPoint(x:x1, y:y1)
//draw path
let path = UIBezierPath()
path.move(to: top)
path.addArc(withCenter: center, radius: arc_radius, startAngle: CGFloat.pi/2, endAngle: angle, clockwise: true)
path.addLine(to: center)
path.addLine(to: top)
path.close()
UIColor.green.setFill()
path.fill()
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
layer.mask = shapeLayer
}
}
绿色部分是我在上述课程中所做的视图。我喜欢圆弧和垂直线,但我只希望有另一条边缘,即从圆弧的右点到中心的一条线。
答案 0 :(得分:1)
我认为您的最高和中间计算错误。
代替
sudo mount -uw /
尝试
let center = CGPoint(x:x1, y:y2)
let top = CGPoint(x:x1, y:y1)