2017-01-08 3 views
-3

Как создать анимацию, подобную этой?Как сделать CGRect анимировать

override func draw(_ rect: CGRect) 
{ 

    let xPointRect = viewWithTag(1)?.alignmentRect(forFrame: rect).midX 
    let yPointRect = viewWithTag(1)?.alignmentRect(forFrame: rect).midY 
    let widthSize = self.viewWithTag(1)?.frame.size.width 
    let heightSize = self.viewWithTag(1)?.frame.size.height 
    let sizeRect = CGSize(width: widthSize! * 0.8, height: heightSize! * 0.4) 

    let rectPlacementX = CGFloat(sizeRect.width/2) 
    let rectPlacementY = CGFloat(sizeRect.height/2) 
    let context2 = UIGraphicsGetCurrentContext() 
    context2?.setLineWidth(2.0) 
    context2?.setStrokeColor(UIColor.red.cgColor) 
    context2?.move(to: CGPoint(x: (xPointRect! - rectPlacementX), y: (yPointRect! - rectPlacementY))) 
    context2?.addLine(to: CGPoint(x: (xPointRect! + rectPlacementX), y: (yPointRect! + rectPlacementY))) 
    context2?.setLineDash(phase: 3, lengths: dashArray) 
    context2?.strokePath() 


    context2.transform = CGAffineTransform(scaleX: 0.8, y: 0.8) 
    UIView.animate(withDuration: 1.0, 
     delay: 0, 
     usingSpringWithDamping: 0.15, 
     initialSpringVelocity: 6.0, 
     options: .allowUserInteraction, 
     animations: { context2.transform = CGAffineTransform.identity }, 
     completion: nil) 
} 

Мой текущий код не работает, потому что context2 не содержит член .transfer, поскольку он является CGRect.

Как я могу сделать эту линию анимированной? Есть идеи?

+0

Опишите, что вы хотите достичь. – shallowThought

+0

Достаточно ли этого описания? –

+0

Нет описания. Чего вы хотите достичь? Вы оживляете рисование линии? – shallowThought

ответ

1

A CGRect не видно, поэтому я не понимаю, почему вы хотите его оживить.

Я предполагаю, что вы хотите анимировать рамку UIView.

Вы можете изменить многие свойства UIView в блоке анимации. Также это рама:

let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) 
someParentView.addSubview(view) 
UIView.animate(withDuration: 2.5) { 
    someUIView.frame = CGRect(x: 100, y: 100, width: 100, height: 100) 

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