2016-05-03 1 views
0

Я пытаюсь создать пользовательские свойства в Swift, которые позволяют мне опустить базовый класс. Что-то вроде того, что разрешено с базовыми цветами в пределах UIColor.Swift класс опускания при инициализации

self.backgroundColor = .blueColor() 

Я знаю, что работает, но я хочу добавить свои собственные цвета. Я хотел бы синтаксис быть что-то вроде:

self.backgroundColor = .customColor() 

ответ

3

Вы можете просто написать расширение для UIColor для того, чтобы сделать это. Например:

extension UIColor { 

    // your custom color function 
    class func customColor() -> UIColor { 
     return UIColor(red: 0.3, green: 0.4, blue: 0.5, alpha: 0.6) 
    } 
} 


... 

self.backgroundColor = .customColor() 

Хотя я и не подозревал, что удобный синтаксис был на языке ... думал, что это только для перечислений. Так спасибо, что показал мне это!

+1

Синтаксис существует всякий раз, когда компилятор может вывести возвращаемый тип функции. – JAL

+0

Мне просто нужно было добавить ключевое слово 'class' перед func. Я делал расширение только func customColor() -> UIColor, и это не сработало. –

+0

Говорите о том, чтобы сожгли, 20 секунд слишком поздно на мой ответ ... Имейте мой +1. – JAL

2

Вы запрашиваете расширение на UIColor?

extension UIColor { 
    static func customColor() -> UIColor { 
     return self.grayColor().colorWithAlphaComponent(0.6) 
    } 
} 

class MyClass { 
    var backgroundColor: UIColor? 
} 

let instance = MyClass() 
instance.backgroundColor = .customColor() 
+0

При таком подходе вы не можете использовать пользовательские инициализаторы, хотя можете ли вы? Я попробовал это с помощью шестнадцатеричных кодов, и это не сработало. Мне просто нужно было добавить ключевое слово класса перед func в моем расширении. –

+1

@CodyWeaver Уверен, что вы можете создать свои собственные инициализаторы удобства UIColor, см. Http://stackoverflow.com/questions/24263007/how-to-use-hex-colour-values-in-swift-ios – Hamish

+0

Да, я использую эти инициализаторы, но затем это не позволяет мне использовать их в рамках функций. Компилятор говорит, что должен использовать «требуемый» инициализатор. –

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