UIView transitionWithView swift语法

rez*_*a23 15 uiview ios swift

有些人可以帮助我在swift中使用transitionWithView的语法.在objective-c中我会像这样使用它:

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

但是我无法让完成处理程序工作.谢谢

hol*_*lex 23

Swift中会是这样的:

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

    // animation

}) { finished in

    // completion

}
Run Code Online (Sandbox Code Playgroud)


Dan*_*ieu 10

我想添加一个接受的答案,你可以通过transitionWithView传递一个数组来传递多个选项:

Swift 2.0

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

            }
    })
Run Code Online (Sandbox Code Playgroud)

Swift 1.2

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

            }
    })
Run Code Online (Sandbox Code Playgroud)

当然,您也可以使用这样的完全限定语法:

[UIViewAnimationOptions.CurveEaseOut, UIViewAnimationOptions.TransitionCurlDown]
Run Code Online (Sandbox Code Playgroud)


Chr*_*irk 7

斯威夫特3

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