2017-02-05 3 views
1

я создаю перечисление в пустом стремительном файл для управления цветовыми схем в моем приложении с этим блоком кода:Swift расширение и перечисление для цветовых схем

enum Color { 
    case border 
    case waterMelon 
    case bleu 
    case ufoGreen 
    case lightBlue 
} 

В нижней части, что я создали расширение базы на Color перечислимых Я только что сделал.

Здесь расширение:

extension Color { 
    var value: UIColor { 
     var instanceColor = UIColor.clear 

     switch self { 
     case .border: 
      instanceColor = UIColor(red:0.92, green:0.93, blue:0.94, alpha:1.00) 
     case .waterMelon: 
      instanceColor = UIColor(red:0.97, green:0.38, blue:0.45, alpha:1.00) 
     default: 
      instanceColor = UIColor.clear 
     } 

     return instanceColor 

    } 
} 

Теперь проблема, когда я хочу использовать эти цвета я использовал что-то вроде этого:

//now : I don't like it. 
view.backgroundView = Color.dark.value 

//that how I want to be 
view.backgroundView = Color.dark 

// or like this 
view.backgroundView = .dark 

И я знаю, что это из-за value, что я заявляю на расширение. но как я могу избавиться от этого?

+0

Вы можете просто использовать статические свойства вместо смотри, например, [этот вопрос и ответы] (http://stackoverflow.com/q/42030338/2976878). – Hamish

+1

без необходимости всего этого, вы просто реализуете 'struct' с цветами' static'. –

+0

@AhmadF Но как я могу использовать вот так: .dark? – Sajad

ответ

3

Не используйте перечисление тогда. Если вы не хотите перечислять значения в инструкции switch, нет необходимости в enum. Используйте struct с постоянными атрибутами.

struct Color { 
    static let border = UIColor(red:0.92, green:0.93, blue:0.94, alpha:1.00) 
    static let waterMelon = UIColor(red:0.97, green:0.38, blue:0.45, alpha:1.00) 
    // and so on .... 
} 

Если вы хотите продлить UIColor, чтобы иметь доступ ко всем другим цветам UIColor, а также, вы можете расширить UIColor так:

extension UIColor { 
    static var border: UIColor { 
     return UIColor(red:0.92, green:0.93, blue:0.94, alpha:1.00) 
    } 

    static var waterMelon: UIColor { 
     return UIColor(red:0.97, green:0.38, blue:0.45, alpha:1.00) 
    } 
} 
+0

Но как насчет использования таких: '.dark'? – Sajad

+0

О, я не знал, что вы хотите иметь расширение UIColor. Редакция. – Kie

+1

В вашем первом фрагменте выше вы можете захотеть, чтобы неизменные свойства имели тип ('static'), а не экземпляры его. – dfri

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