Подтвердить что ты не робот

Переход UIViewВид быстрого синтаксиса

Может ли кто-нибудь помочь мне с синтаксисом переходаWithView в swift. в objective-c Я бы использовал его так:

[UIView transitionWithView:[ self view ] duration:0.325 options:UIViewAnimationOptionCurveEaseOut animations:
 ^{
     // do the transition
 }
 completion:
 ^( BOOL finished ){
    // cleanup after the transition
 }];

Однако я не могу заставить обработчик завершения работать. спасибо

4b9b3361

Ответ 1

это будет так в Swift 5.x:

UIView.transition(with: self.view, duration: 0.325, options: .curveEaseInOut, animations: {

    // animation

}) { finished in

    // completion

}

Ответ 2

Я хотел бы добавить к принятому ответу, что вы можете передать несколько опций в transitionWithView, передав такой массив:

Swift 2.0

 UIView.transitionWithView(status, duration: 0.33, options:
        [.CurveEaseOut, .TransitionCurlDown], animations: {
            //...animations
        }, completion: {_ in
            //....transition completion
            delay(seconds: 2.0) {

            }
    })

Swift 1.2

UIView.transitionWithView(status, duration: 0.33, options:
        .CurveEaseOut | .TransitionCurlDown, animations: {
            //...animations
        }, completion: {_ in
            //transition completion
            delay(seconds: 2.0) {

            }
    })

и, конечно, вы также можете использовать полный синтаксис:

[UIViewAnimationOptions.CurveEaseOut, UIViewAnimationOptions.TransitionCurlDown]

Ответ 3

Swift 3

UIView.transition(with: someview,
                                    duration:0.6,
                                    options:UIViewAnimationOptions.transitionFlipFromLeft,
               animations: {
                   // do something
           }, completion:{
               finished in
               // do something
           })

Ответ 4

документы немного сложно найти, но это должно работать:

UIView.transitionWithView(self.view, 
                 duration:0.325,
                  options: options:UIViewAnimationOptions.CurveEaseOut,
               animations: {
                             …
                           },
               completion: {
                             finished in
                             …
                           })

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

Но если вы не собирались передавать блок анимации, это было бы предельно читаемым:

UIView.transitionWithView(self.view, duration:0.325, options: options:UIViewAnimationOptions.CurveEaseOut, animations: nil) {
    finished in
    …
}