2016-12-03 5 views
2

Есть ли способ анимировать объект в swift (UIView, UIButton и т. Д.), Чтобы он скользил в левой части экрана и одновременно включался в в правой части экрана, что части fe UIView, который уже соскользнул с левой стороны, уже сползает с правой стороны. Надеюсь, вы поймете мой вопрос, его немного сложно объяснить эту проблему. Я использую Xcode + Swift 3.0. Спасибо.SWIFT slide one Объект «in and out»

ответ

2

что части F.E. UIView, который уже соскользнул с левой стороны, уже сползает с правой стороны

Это почти ускользнуло от меня. Единственный способ, которым у вас есть один «вид», отображаться в двух местах на экране, состоит в том, что у него есть два вида: один слева и один справа.

Затем вы можете установить ширину символов (правильно), скрыть подсмотры (правильно) и анимировать. Если анимация достаточно быстрая (мой односторонний сдвиг установлен на 0,3 секунды), пользователь будет думать, что это все одно представление.

+0

Короче говоря, ответ «Нет, вы не можете этого сделать». Вы должны подделать его, имея 2 одинаково выглядящих вида, один из которых сдвигается за пределы экрана, а второй - скользящий экран на одно и то же время. –

0

Вы можете использовать UIView.animate(). Запустите вторую анимацию после завершения первого.

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

var container = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 200.0, height: 200.0)) 
let view = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 50.0, height: 50.0)) 
view.center = CGPoint(x: 100, y: 100) 
view.backgroundColor = UIColor.green 
container.addSubview(view) 
let screenWidth = CGFloat(356.0) 

// animate to left 
UIView.animate(withDuration: 2.0, delay: 0.0, options: [], animations: { 
    view.center = CGPoint(x: -view.frame.size.width, y: view.frame.origin.y) 
}, completion: { (finished: Bool) in 
    //set view to right of screen 
    view.center = CGPoint(x: view.frame.size.width + screenWidth, y: view.frame.origin.y) 

    // animate back to center 
    UIView.animate(withDuration: 2.0, delay: 0.0, options: [], animations: { 
     view.center = CGPoint(x: 100, y: 100) 
    }) 

})