Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Swift3中使用可选动画实现功能_Ios_Swift_Design Patterns_Swift3 - Fatal编程技术网

Ios 如何在Swift3中使用可选动画实现功能

Ios 如何在Swift3中使用可选动画实现功能,ios,swift,design-patterns,swift3,Ios,Swift,Design Patterns,Swift3,我想在Swift 3中实现一个函数,它可以改变UI中的某些内容。我想向该函数添加一个参数,以决定此更改是否适用于动画 我的职能: func doSomeChanges(animated: Bool) { if animated { UIView.animate(withDuration: 0.25) { //UI changes } } else { //UI changes } } 我的第

我想在Swift 3中实现一个函数,它可以改变UI中的某些内容。我想向该函数添加一个参数,以决定此更改是否适用于动画

我的职能:

func doSomeChanges(animated: Bool) {
    if animated {
        UIView.animate(withDuration: 0.25) {
            //UI changes
        }
    }
    else {
        //UI changes
    }
}
我的第一个目标是使用Swift的内部功能:

func doSomeChanges(animated: Bool) {
    func uiChanges() {
        //UI changes
    }

    if animated {
        UIView.animate(withDuration: 0.25) {
            uiChanges()
        }
    }
    else {
        uiChanges()
    }
}
第二个是将持续时间设置为0.0,但我不知道这是一个好的做法:

func doSomeChanges(animated: Bool) {
    UIView.animate(withDuration: animated ? 0.25 : 0.0) {
        //UI changes
    }
}

如何正确执行此操作?

您可以通过创建如下代码块来避免此函数:

func doSomeChanges(animated: Bool) {
    let block = {
        // UI Changes
    }

    if animated {
        UIView.animate(withDuration: 0.25) {
            block()
        }
    } else {
        block()
    }
}

这个解决方案与内部函数非常相似。它确实非常相似。我只是展示了我将使用的方法,并指出了我将使用的方法。我倾向于喜欢块版本,因为如果需求发生变化,可以很容易地将其传递到函数中。