2016-03-16 3 views
0

Я изо всех сил, чтобы нарисовать круг в пределах 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.

+0

Возможно, вы добавили его как подслой в неправильный вид. Попробуйте 'circleView.layer.addSublayer (rectShape)' –

+0

Эта строка вряд ли будет прав: 'rectShape.position = circleView.center' – matt

ответ

0

Вот код я использую, чтобы сделать профиль имидж пользователя раунд:

imageView.layer.cornerRadius = imageView.frame.size.width/2 


imageView.clipsToBounds = true 

В вашем случае, вы будете использовать circleView вместо imageView.

Смежные вопросы