如何在函数中接受多个类型作为参数?

wyt*_*yte 2 parameters types function ios swift

我想在另一个swift文件中创建一个通用函数,用于隐藏和显示带动画的UI对象.以下是两个代码:

func hide(object: /*My UI Object*/, duration: Double, delay: Double) {
    UIView.animate(withDuration: duration, delay: delay, options: [], animations: {
        object.alpha = 0
    } ,
                   completion: nil
    )
}

func show(object: /*My UI Object*/, duration: Double, delay: Double) {
    UIView.animate(withDuration: duration, delay: delay, options: [], animations: {
        object.alpha = 1
    } ,
                   completion: nil
    )
}
Run Code Online (Sandbox Code Playgroud)

我想使用这个对象的函数,如:UILabel,UIButton,UIView,UITextField等.我找不到允许多种类型作为"对象"参数的任何方法.

我也尝试将"对象"的类型设置为Any,但这会导致"object"的错误没有成员"alpha".

将类型设置为AnyObject会导致无法分配给属性的错误,因为"object"是"let"常量.

谢谢您的帮助!

Ben*_*nzi 7

您可以键入参数UIView,因为所有提到的控件都从中继承.

func hide(object: UIView, duration: Double, delay: Double) {
    UIView.animate(withDuration: duration, delay: delay, options: [], animations: {
        object.alpha = 0
    } ,
                   completion: nil
    )
}

func show(object: UIView, duration: Double, delay: Double) {
    UIView.animate(withDuration: duration, delay: delay, options: [], animations: {
        object.alpha = 1
    } ,
                   completion: nil
    )
}
Run Code Online (Sandbox Code Playgroud)