私の問題を説明する前に、 この質問 で提案を既に実施したと言うことが重要です。この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
タイプ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
})
}