Я изо всех сил, чтобы нарисовать круг в пределах UIView добавил на свой основной взгляд, с помощью Swift 2.0 в Xcode 7.CAShapeLayer - круг внутри UIView
UIView был создан в раскадровке и объявлен как IBOutlet в коде:
@IBOutlet var circleView: UIView!
Я использовал код из учебника онлайн, чтобы нарисовать круг во время для обратного отсчета таймера:
func createCircle(){
let bounds = CGRect(x: 0, y: 0, width: circleView.frame.width/2, height: circleView.frame.width/2)
// Create CAShapeLayer
let rectShape = CAShapeLayer()
rectShape.bounds = bounds
rectShape.position = circleView.center
rectShape.cornerRadius = bounds.width/2
view.layer.addSublayer(rectShape)
rectShape.path = UIBezierPath(ovalInRect: rectShape.bounds).CGPath
rectShape.lineWidth = (bounds.width)/10 // chnage this to change line width
rectShape.strokeColor = UIColor.whiteColor().CGColor
rectShape.fillColor = UIColor.clearColor().CGColor
rectShape.strokeStart = 0
rectShape.strokeEnd = 0
let start = CABasicAnimation(keyPath: "strokeStart")
start.toValue = 0
let end = CABasicAnimation(keyPath: "strokeEnd")
end.toValue = 1
let group = CAAnimationGroup()
group.animations = [start, end]
group.duration = timerDuration
group.autoreverses = false // use true to bounce it back
group.repeatCount = 1 // can use the keyword HUGE to repeat forver
rectShape.addAnimation(group, forKey: nil)
}
Я играл с позицией, но это никогда не кажется центр круга в центре circleView
.
Возможно, вы добавили его как подслой в неправильный вид. Попробуйте 'circleView.layer.addSublayer (rectShape)' –
Эта строка вряд ли будет прав: 'rectShape.position = circleView.center' – matt