iOS 9路径的中心位置随大小屏幕而变化

时间:2015-12-03 15:41:28

标签: ios swift uiview uibezierpath

我想在UIView中添加一个路径,我这样做:

let Circle = UIBezierPath(arcCenter: CGPoint(x: InterfaceView.bounds.size.width/2, y: InterfaceView.bounds.size.height/2), radius: 10, startAngle: 0, endAngle: CGFloat(M_PI*2), clockwise: true)
let Layer = CAShapeLayer()
Layer.path = Circle.CGPath
Layer.strokeColor = UIColor.redColor().CGColor
Layer.lineWidth = 1.0
InterfaceView.layer.addSublayer(Layer)

这适用于iPhone 6和6S,但当屏幕很小或更大时,圆圈的位置不佳:

iPhone 6S:

enter image description here

iPhone 5S:

{{3}}

也许是一个想法为什么?

由于

2 个答案:

答案 0 :(得分:1)

您可能在自动布局约束尚未启动的时刻绘制路径,因此绘图是相对于设计时视图框架进行的。

两种可能的解决方案:

1)使用自动布局约束在完整视图中心的子视图中绘制圆,并且始终具有相同的大小。

2)在IGNORE 1 LINES中的任何尺寸更改时重绘您的路径。

答案 1 :(得分:0)

您可能应该使用center参数。我在不同的屏幕尺寸上测试它,圆圈直接在屏幕的中间。

 let Circle = UIBezierPath(arcCenter: self.view.center, radius: 10, startAngle: 0, endAngle: CGFloat(M_PI*2), clockwise: true)
        let Layer = CAShapeLayer()
        Layer.path = Circle.CGPath
        Layer.strokeColor = UIColor.redColor().CGColor
        Layer.lineWidth = 1.0
        self.view.layer.addSublayer(Layer)