web-dev-qa-db-ja.com

UIView.animateWithDuration in Swift 2.0?

私の問題を説明する前に、 この質問 で提案を既に実施したと言うことが重要です。このanimateWithDurationメソッドについての私の疑問は、両方の質問が非常に類似したタイトル。

だから、私はSwift初心者であり、以前に行った以前のObjective Cデモに基づいて、Swiftでいくつかの小さなプロジェクトを行っています。

これは私のObjective Cコードです:

- (void)moveSideBarToXposition: (int) iXposition{

    [UIView animateWithDuration:0.5f
                          delay:0.1
                        options: UIViewAnimationOptionTransitionNone
                     animations:^{  self.mainView.frame = CGRectMake(iXposition, 20, self.mainView.frame.size.width, self.mainView.frame.size.height); }

                     completion:^(BOOL finished){
                         if (self.isSidebarHidden==YES) {
                             self.isSidebarHidden = NO;
                         }

                         else{
                             self.isSidebarHidden = YES;
                         }
                     }];
}

そしてこれは私のSwiftバージョン:

func moveSideBarToXposition(iXposition: Float) {

    UIView.animateWithDuration(0.5, delay: 1.0, options: UIViewAnimationTransition.None, animations: { () -> Void in

        self.contentView.frame = CGRectMake(iXposition, 20, self.contentView.frame.size.width, self.contentView.frame.size.height)

    }, completion: { (finished: Bool) -> Void in

        if isMenuHidden == true {
            isMenuHidden = false
        } else {
            isMenuHidden = true
        }
    })
}

そして、私はこのエラーを受け取ります。

タイプの引数リストで「animateWithDuration」を呼び出すことはできません

ドキュメントを読みましたが、実際には問題が何であるかわかりません。

ところで、私はXcode 7に取り組んでおり、Swift 2.0

18
Jadekin

タイプUIViewAnimationTransitionのenumを、タイプUIViewAnimationOptionsを必要とする引数に渡している(options引数)

正しい列挙値を使用した正しい構文を次に示します。

func moveSideBarToXposition(iXposition: Float) {
    let convertedXposition = CGFloat(iXposition)
    UIView.animateWithDuration(0.5, delay: 1.0, options: UIViewAnimationOptions.TransitionNone, animations: { () -> Void in

        self.contentView.frame = CGRectMake(convertedXposition, 20, self.contentView.frame.size.width, self.contentView.frame.size.height)

        }, completion: { (finished: Bool) -> Void in

            // you can do this in a shorter, more concise way by setting the value to its opposite, NOT value
            isMenuHidden = !isMenuHidden
    })
}
32
imas145