在解释我的问题之前,重要的是要说一下我已经实现了这篇问答中提出的建议,并且我认为尽管两个问题的标题非常相似,但我对于
所以,我是一个Swift新手,正在使用Swift进行一些小项目,这些项目基于我之前做过的一些Objective C演示代码。
这是我的Objective C代码:
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
}
})
}
我遇到了以下错误:
无法调用具有类型为 '(Double, delay: Double, options: UIViewAnimationTransition, animations: () -> Void, completion: (Bool) -> Void)' 的参数列表的 'animateWithDuration'
我已经阅读了文档,但实际上我不确定问题出在哪里。
顺带一提,我正在使用Xcode 7和Swift 2.0。
moveSidebarToXposition
接受一个类型为Float
的参数,而你将其插入到了需要CGFloat
类型的CGRect
中。因此,你需要像这样进行转换:let convertXposition = CGFloat(iXPosition)
,然后在CGRect
构造中使用convertedXposition
。 - imas145