ios - Swift 2.0 中的 UIView.animateWithDuration?

标签 ios swift uiviewanimation swift2 xcode7

在解释我的问题之前,重要的是要说我已经实现了 this question 中提出的建议我认为我对这个 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
        }
    })
}

我得到了这个错误。

Cannot invoke 'animateWithDuration' with an argument list of type '(Double, delay: Double, options: UIViewAnimationTransition, animations: () -> Void, completion: (Bool) -> Void)'

我阅读了文档,但实际上我不确定问题出在哪里。

顺便说一句,我正在研究 Xcode 7 和 Swift 2.0

最佳答案

您正在将 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
    })
}

关于ios - Swift 2.0 中的 UIView.animateWithDuration?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31255374/

相关文章:

ios - 如何在应用程序关闭时发送本地通知(快速)?

ios - 自动布局 : animating height to zero while preserving user interaction

swift - UIView.transitionFromView -

ios - 通过 CGMutablePathRef 动画绘制在 drawRect 中的框

xml - 在 Swift 中对 XML 元素进行分组

ios - CGContextRef画线和点,如何清屏?

ios - Storyboard 中 UINavigationController 的弹出窗口大小

ios - 访问 AlamoFire 框架中的映射对象返回 nil 值

ios - 事件指示器不会出现在 swift 4 上

ios - 如何将字典转换为数组