Прежде чем объяснить мою проблему, важно сказать, что я уже реализовал предложение, сделанное в this question, и я думаю, что мои сомнения в этом методе animateWithDuration
совершенно разные, несмотря на то, что оба вопроса имеют очень похожий заголовок.UIView.animateWithDuration в Swift 2.0?
Итак, я новичок Swift, и я делаю небольшие проекты в Swift, основанные на предыдущих демонстрациях Objective C, которые я делал раньше.
Это мой объектный код 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' со списком аргументов типа '(распашные, задержка: распашные варианты: UIViewAnimationTransition, анимации:() -> Пустота, завершающие: (Bool) -> Пустота)'
Я прочитал документацию, но на самом деле я не уверен, в чем проблема.
Btw, я работаю над Xcode 7 и Swift 2.0
Hi! Спасибо за ваш ответ. На самом деле, вы правы. (мой плохой, я не понял разницы между UIViewAnimationTransition.None и UIViewAnimationOptions.TransitionNone). Я исправил эту строку, но у меня все еще такая же проблема. Я просто удалил эту строку (self.contentView.frame = CGRectMake (iXposition, 20.0, self.contentView.frame.size.width, self.contentView.frame.size.height) ), и все это сработало. Но когда я вернусь, я получаю ту же ошибку, о которой я упоминал ранее. У тебя есть какой-нибудь совет? Я бы очень помог – Jadekin
Ошибка, которую вы получаете с вставленной линией, для меня не имеет смысла, но проблема в том, что ваш метод 'moveSidebarToXposition' принимает аргумент типа' Float', который вы вставляете в 'CGRect' , который требует типа 'CGFloat'. Поэтому вам нужно преобразовать его так: 'let convertXposition = CGFloat (iXPosition)' и использовать 'convertXposition' в конструкции' CGRect' – imas145
См. Мой обновленный ответ – imas145