Layout Anchors, NSLayoutConstraint и Visual Format Language?
Суть
Все три способа создают одни и те же объекты NSLayoutConstraint; отличаются только API.
- Layout Anchors (
NSLayoutAnchor, iOS 9+) — рекомендуемый способ:view.leadingAnchor.constraint(equalTo:constant:). Типобезопасен (нельзя связатьleadingAnchorсtopAnchor— компилятор не позволит смешать оси), лаконичен, работает сUILayoutGuide(safeAreaLayoutGuide,layoutMarginsGuide,keyboardLayoutGuide). NSLayoutConstraint(item:attribute:relatedBy:toItem:attribute:multiplier:constant:)— низкоуровневый конструктор. Многословный, ошибки (неверный атрибут) проявляются только в рантайме. Нужен, когда атрибуты выбираются динамически.- Visual Format Language (VFL) — строковый DSL в стиле ASCII-art:
"H:|-16-[title]-8-[value(>=80)]-16-|". Создаёт сразу ряд констрейнтов, но не типобезопасен, не покрываетmultiplier,centerX/YиsafeArea, а ошибки в строке падают в рантайме. Фактически legacy: в новом коде его не используют, а в Swift-проектах заменяютUIStackViewи anchors.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep