В моем текущем проекте я часто создаю UIView, чтобы поместить серый прямоугольник в представление. Обычно я сначала накладываю белые изображения на макет, а затем устанавливаю все границы в viewDidLoad()
. Теперь я решил, что хочу ускорить процесс, написав подкласс, который автоматически установит границу представления, а затем установите все эти представления для использования этого подкласса. Но я не знаю, куда поместить этот код на подкласса:Каковы шаги по созданию подкласса для UIView, который добавляет границу?
self.layer.borderWidth = 2;
self.layer.borderColor = UIColor.grayColor().CGColor;
ли я поставить его на override init()
? Нужно ли переопределять все версии init
для UIView? Или есть лучший способ сделать это?
Спасибо.
PS: Если есть какой-либо способ сделать так, чтобы рамка сразу отображалась на время разработки раскадровки (я думаю, что она имеет какое-то отношение к drawable
, но я вообще этого не понимаю), я будьте очень благодарны!
EDIT:
Из принятого ответа, я получаю этот ответ: https://stackoverflow.com/a/33721647/3003927, которые в основном так:
import UIKit
class MyView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
didLoad()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
didLoad()
}
convenience init() {
self.init(frame: CGRectZero)
}
func didLoad() {
//Place your initialization code here
self.layer.borderWidth = 2;
self.layer.borderColor = UIColor.grayColor().CGColor;
}
}
Спасибо! Ответ, который действительно стал моим решением из вашей ссылки, заключается в следующем: http://stackoverflow.com/a/33721647/3003927, который поместил вызов функции 'didLoad()' на оба кадра init и init coder. –