这是我的结果
虽然我明确指出圆弧中心是视图的中心。
这是我的代码:
let count = colors.count-1
var index: Int = initialIndex
for oneArray in points {
let startAngleRadiant: CGFloat = degreesToRadians(Double(oneArray[0]))
let endAngleRadiant: CGFloat = degreesToRadians(Double(oneArray[1]))
let radius: CGFloat = self.frame.height/4
let path = UIBezierPath(arcCenter: center,
radius: radius,
startAngle: startAngleRadiant,
endAngle: endAngleRadiant,
clockwise: true)
let color = UIColor(red: colors[count-index][0], green: colors[count-index][1], blue: colors[count-index][2], alpha: 1.0)
path.lineWidth = CGFloat(4)
if ++index >= count {
index = 0
}
color.setStroke()
path.stroke()
}
视图(内部的圆圈)具有正确的高度和宽度约束。如你所见
这是视图Wainting Circle View
的约束
如你所见,我设置相对于晚餐视图的高度和宽度,
因此,该视图的中心应该是正确的,因此,我使用的自我中心应该在中心绘制
答案 0 :(得分:4)
您正在定义拱门的中心self.center
,文档描述为:
中心在其超视图的坐标系内指定,并以磅为单位进行测量。设置此属性会相应地更改框架属性的值。
这与CGPoint(x: frame.midX, y: frame.midY)
基本相同,这意味着如果您的视图不与超视图超级视图的顶部齐平,则center.x
将与视图的中心不同
例如,如果您的视图有frame == CGRect(x:50, y:50, width:100, height:100)
,则视图的右下角会显示center == CGPoint(x: 50 + 100/2, y: 50 + 100 /2) == CGPoint(x:100, y:100)
。
如果您希望圆在视图的中心居中,则应根据边界选择中心,该边界位于视图相对坐标系中:
let center = CGPoint(x: bounds.midX, y: bounds.midY)
let path = UIBezierPath(arcCenter: center,
radius: radius,
startAngle: startAngleRadiant,
endAngle: endAngleRadiant,
clockwise: true)