函数返回有关重载运算符的错误

时间:2014-06-05 23:30:30

标签: ios xcode swift

当我将参数alpha分配给函数实现时,此代码显示错误无法找到' /'接受提供的参数,但如果我将alpha设置为1.0,则错误消失。

导致这种情况的原因是什么?

import Foundation
import UIKit

extension UIColor {

  enum AlphaLevel :CGFloat {
    case Empty  = 0.0
    case Low    = 0.25
    case Half   = 0.5
    case High   = 0.75
    case Full   = 1.0
  }

  class func hazeColor(alpha :AlphaLevel = .Full) -> UIColor! {
    return UIColor(red: 230/255.0, green: 235/255.0, blue: 245/255.0, alpha: alpha)
  }

}

我正在尝试尝试过的尝试:

class func hazeColor(alpha :AlphaLevel = .Full) -> UIColor! {
    return UIColor(red: Float(230)/255.0, green: Float(235)/255.0, blue: Float(245)/255.0, alpha: alpha)
  }

1 个答案:

答案 0 :(得分:1)

可以使用230/255.0,因为数字的类型将在计算后确定。如果将两个数字分配给变量(或常量),则必须在计算之前转换它们。所以230/255.0没有问题。 (事实上​​,CGFloatDouble ..而不是Float

AlphaLevel的扩展名中定义UIColor枚举似乎是一个致命错误。如果我这样做,Swift会崩溃(虽然它应该是可能的)。总之...

您的代码中的问题是alpha方法中传递的hazeColorAlphaLevel的枚举,而不是CGFloat,因此类型检查失败。只需将UIColor(red: 230/255.0, green: 235/255.0, blue: 245/255.0, alpha: alpha)修改为UIColor(red: 230/255.0, green: 235/255.0, blue: 245/255.0, alpha: alpha.toRaw()),即可绕过。