【问题标题】:Functions returns error about overloading operator函数返回有关重载运算符的错误
【发布时间】:2014-06-05 23:30:30
【问题描述】:

当我将参数 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)
  }

【问题讨论】:

  • 浮点转换似乎不是问题,但如果我删除所有“/”,我会收到错误:找不到接受提供的“init”的重载论据

标签: ios xcode swift


【解决方案1】:

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

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

您的代码中的问题是您传递给hazeColor 方法的alphaAlphaLevel 的枚举,而不是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())即可。

【讨论】:

    猜你喜欢
    • 2011-08-25
    • 2015-06-20
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多