У меня есть класс Swift UIView (с именем HypnosisView), который рисует круг на экране. Рамка представления настроена так, чтобы заполнить экран. Я хотел бы программно установить цвет фона представления при инициализации (поэтому, когда создается экземпляр представления, он автоматически имеет указанный цвет фона). Я смог сделать эту работу с помощью удобного инициализатора, однако мне интересно, есть ли более эффективный способ сделать это (или на самом деле я делаю это правильно). В идеальном сценарии я хотел бы просто добавить фрагмент кода, устанавливающий background: self.background = UIColor.clearColor()
, к унаследованному методу init(frame: CGRect)
, поэтому мне не нужно писать полностью новый инициализатор только для установки цвета фона.
Вот мой удобный метод инициализации (то, что я сейчас использую, что работает):
convenience init(rect: CGRect){
self.init(frame: rect)
self.backgroundColor = UIColor.clearColor()
}
и я вызываю этот метод в делегате следующим образом:
var mainFrame = self.window!.bounds
var mainView = HypnosisView(rect: mainFrame)
Дайте знать, если у вас появятся вопросы. Спасибо!
override init(frame: CGRect){ self.backgroundColor = UIColor.clearColor() <return key> super.init(frame: frame)}
, и он выдал ошибку:Class "HypnosisView" does not implement its superclass's required members
, поэтому я попробовал удобный инициализатор. я все еще учусь всему этому - person dcgoss   schedule 10.08.2014init(frame)
, вы также должны переопределятьinit(coder)
, что создает для вас больше кода. Так что в вашем случае я думаю, что у вас есть самое простое решение. Удобный инициализатор, который устанавливает для свойства значение по умолчанию. - person Rikkles   schedule 10.08.2014