Вопрос к опытным разработчикам.
Каким образом можно “упростить” VC при написании UI кодом, т.к при большом кол-ве элементов VC превращается в massive VC? Спасибо.
Создание UI кодом
Dimarious
#1
devlab
#2
Сделать фабрику для создания каждого контрола, чтоб она автоматически настраивала контрол. После просто добавить контрол как сабвью и указать констрейнты
devlab
#4
struct UIFactory {
struct Utility {
static func box(color: NSColor = .white, superview: NSView? = nil) -> NSBox {
let box = NSBox(frame: .zero)
box.boxType = .custom
box.borderColor = .clear
box.titlePosition = .noTitle
box.fillColor = color
superview?.addSubview(box)
return box
}
static func popupButton(itemTitles: [String], superview: NSView? = nil) -> NSPopUpButton {
let popup = NSPopUpButton(frame: .zero)
popup.removeAllItems()
popup.addItems(withTitles: itemTitles)
popup.selectItem(at: 0)
popup.resetTitleColor()
superview?.addSubview(popup)
return popup
}
static func dot(color: NSColor, diameter: CGFloat = 6, superview: NSView? = nil) -> MRView {
let view = NSView(superview: superview)
view.layer!.cornerRadius = diameter * 0.5
view.backgroundColor = color
constrain(view) { view in
view.width == diameter
view.height == view.width
}
return view
}
}
}
Вот код примера фабрики на пару контролов. После просто инициализация в контроллере и все настроено как положено
devlab
#7
NS -> NextStep. Чтото вроде базовых классов Apple, только для десктопа. Но принцип один и тот же
Dimarious
#8
а если создать отдельный UIVIew класс, добавить на него весь UI и потом добавить только эту вью на вьюконтр?
haymob
#12
Можно с помощью билдера https://www.swiftbysundell.com/articles/using-the-builder-pattern-in-swift/