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

UIView.animateWithDuration в Swift 2.0?

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

Итак, я новичок Swift, и я делаю небольшие проекты в Swift, основанные на предыдущих демонстрациях Objective C, которые я делал раньше.

Это мой код 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' с помощью списка аргументов типа '(Double, delay: Double, options: UIViewAnimationTransition, анимация:() → Пустота, завершение: (Bool) → Void) '

Я прочитал документацию, но на самом деле я не уверен, в чем проблема.

Btw, я работаю над Xcode 7 и Swift 2.0

4b9b3361

Ответ 1

Вы передаете enum типа UIViewAnimationTransition аргументу, для которого требуется тип 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
    })
}