2017-01-26 2 views
0

У меня есть enum Цвета для возврата цветов, мне интересно, может ли enum достичь изменений динамического aplha?цвета enum с динамическим значением альфа

enum Colors { 

     case 
     text, 
     yesColorWith(alpha:CGFloat) 


     var color: UIColor { 
      switch self { 
      case .text: return UIColorFromHEX(0xd1d1d1, alpha: 1.0) 
      case .yesColorWith(alpha: CGFloat) : return UIColorFromHEX(0x89A225, alpha: alpha) 
      } 
     } 
    } 


func UIColorFromHEX(_ hex: UInt, alpha:Float) -> UIColor { 

     return UIColor(
      red: CGFloat((hex >> 16) & 0xff)/255, 
      green: CGFloat((hex >> 08) & 0xff)/255, 
      blue: CGFloat((hex >> 00) & 0xff)/255, 
      alpha: CGFloat(alpha)) 
    } 

ответ

2

Добро пожаловать в дикий и дурацкий мир Swift case Узоры. Изменение

case .yesColorWith(alpha: CGFloat) : 

в

case .yesColorWith(let alpha) : 

Таким образом:

enum Colors { 
    case text 
    case yesColorWith(alpha: CGFloat) 
    var color: UIColor { 
     switch self { 
     case .text: 
      return UIColorFromHEX(0xd1d1d1, alpha: 1.0) 
     case .yesColorWith(let alpha): // <-* 
      return UIColorFromHEX(0x89A225, alpha: alpha) 
     } 
    } 
} 
+0

Не должна ли она быть разделена на 255? –

+0

нет - просто используйте альфа от 0 до 1 - 256 единиц для изменения (шестнадцатеричного) диапазона от 0 ... 255 до 0 ... 1 путем выделения по 256 – muescha

+0

@muescha 255 это максимальное значение (FF). 255/256 меньше 1.0, поэтому у вас никогда не будет сплошного цвета. –

Смежные вопросы