2016-09-06 4 views
-1

나는 이미지 (innerCircle)가 중에있는 UIImage의 현재 크기를 얻는 방법을 다음성장 및 사용하여 애니메이션 스케일 줄어들고 애니메이션

UIView.animateWithDuration(5, delay:0, options: [.Repeat, .Autoreverse], animations: {() -> Void in 
     self.innerCircle.transform = CGAffineTransformMakeScale(3.5, 3.5) 
    }) { (finished: Bool) -> Void in 
     UIView.animateWithDuration(1, animations: {() -> Void in 
      self.innerCircle.transform = CGAffineTransformIdentity 

내가 전류를 얻기 위해 노력하고 있어요 애니메이션의 어느 시점에서든 이미지의 크기를 볼 수 있으므로 특정 시점을 넘어서서 커지면 확인할 수 있습니다. 나는 "Inhale"에서 "Exhale"로, 그리고 그 반대의 경우 텍스트 레이블을 변경할 수 있도록이 작업을 수행하려고합니다.

나는

let innerCircleWidth = self.innerCircle.image!.size.width 

를 사용하여 시도하지만 초기 폭 값을 가져옵니다. 업데이트되지 않습니다.

감사합니다.

+0

'innerCircle'의 표현 레이어를 확인해야합니다. 'innerCircle.layer.presentationLayer()? frame' – beyowulf

+1

"애니메이션의 어느 시점에서든 이미지의 현재 크기를 얻으 려하고 특정 시점을 넘어서 자랐을 때 확인할 수 있습니다. "Inhale"에서 "Exhale"로 텍스트 레이블을 변경할 수 있으며 그 반대는 "완전히 잘못된 접근입니다. Inhale에서 Exhale으로 애니메이션을 변경해야합니다 .- 애니메이션을보고 어떻게 든 방해하지 않으려 고합니다. – matt

답변

0

UIView.animateWithDuration을 사용하여 현재 표시되는 항목에 대한 정확한 정보를 얻으려면 innerCircle.layer.presentationLayer()?.frame보기의 프레임 자체가 아니라 애니메이션 인보기의 presentationLayer을 확인해야합니다. 자세한 내용은 here을 참조하십시오.

어떻게 작동하는지 이해하려면 신속한 놀이터에서 다음 코드를 삽입하면됩니다.

import UIKit 
import XCPlayground 

let outerCircle = UIView(frame: CGRect(x: 0, y: 0, width: 1000, height: 1000)) 
let innerCircle = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 100, height: 100)) 
outerCircle.addSubview(innerCircle) 
innerCircle.center = outerCircle.center 
innerCircle.backgroundColor = UIColor.redColor() 
UIView.animateWithDuration(5, delay:0, options: [.Repeat, .Autoreverse], animations: {() -> Void in 
    innerCircle.transform = CGAffineTransformMakeScale(3.5, 3.5) 
}) { (finished: Bool) -> Void in 
    UIView.animateWithDuration(1, animations: {() -> Void in 
     innerCircle.transform = CGAffineTransformIdentity 
    }) 
} 



class TimerObject: NSObject { 
    override init() 
    { 
     super.init() 
     let timer = NSTimer(timeInterval: 0.10, target: self, selector: #selector(self.printPresentationFrame), userInfo: nil, repeats: true) 
     NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSDefaultRunLoopMode) 
    } 

    @objc func printPresentationFrame() 
    { 
     print(innerCircle.layer.presentationLayer()?.frame) 
    } 
} 
let timerObject = TimerObject() 

XCPlaygroundPage.currentPage.liveView = outerCircle 
0

이미지의 크기가 변경되지 않았기 때문입니다. 변환을 적용해도보기의 크기는 변경되지 않습니다.

+0

오! 대단히 고마워, 난 아직도이게 새로운거야. 내가하려는 일을 성취 할 수 있도록보기의 현재 척도를 얻을 수있는 방법이 있습니까? –

+0

아마도이 방법이 효과가 있습니다. http://stackoverflow.com/questions/2694785/get-size-of-uiview-after-applying-cgaffinetransform –