2015-03-25 3 views
0

Я пытаюсь использоватьIOS показать этикетку или положение изображения во время анимации

UIView.animateWithDuration() 

изменить положение метки или изображения. Это довольно просто. Однако мне также нужно отображать позицию y на экране во время анимации. Поэтому я вижу, как изменилась позиция y во время анимации. Как я могу это реализовать?

ответ

1

Вы можете получить раму движущегося вида из своего presentationLayer. Вам нужно будет установить NSTimer, чтобы получить это значение за любой промежуток времени, который вы хотите.

class ViewController: UIViewController { 

    let block = UIView(frame: CGRect(x: 20, y: 100, width: 80, height: 80)) 

    override func viewDidAppear(animated: Bool) { 

     super.viewDidAppear(animated) 
     block.backgroundColor = UIColor.redColor() 
     self.view.addSubview(block) 
     let timer = NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: "handleTimer", userInfo: nil, repeats: true) 
     UIView.animateWithDuration(5.0, animations: {() -> Void in 
      self.block.frame = CGRect(x: 300, y: 400, width: 80, height: 80) 
     }) { (finished) -> Void in 
      timer.invalidate() 
     } 
    } 

    func handleTimer() { 
     println(block.layer.presentationLayer().frame.origin.y) 
    } 
} 
+0

Большое вам спасибо! Я думаю, что трюк заключается в использовании presentationLayer(), а не только .frame.origin.y – user2507194

0

Вы можете переместить ярлык, изменив его center.y. Чтобы получить верхнюю границу позиции y, используйте frame.origin.y. Это может помочь:

UIView.animateWithDuration(
    0.5, 
    animations: { 
     label.center.y = <your destination y value> 
     label.text = label.frame.origin.y.description 
    }, 
    completion: nil 
    } 
) 

Надеюсь, что это поможет.

+0

Это только один раз меняет текст, есть ли способ постоянно отображать измененную позицию? – user2507194

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