Ответ
Да, имел опыт разработки и поддержки дизайн-системы (Design System) в iOS-приложениях.
Реализация и подход:
- Единый источник истины: Компоненты и стили создавались на основе макетов в Figma, где были определены токены (цвета, шрифты, отступы, радиусы скругления).
- Реализация в коде:
- SwiftUI: Создавал переиспользуемые
View-компоненты (кнопки, текстовые поля, карточки). - UIKit: Использовал подклассы (
UIButton,UILabel) иUIAppearanceдля глобальной стилизации.
- SwiftUI: Создавал переиспользуемые
Пример компонента кнопки в SwiftUI:
// Токены вынесены в отдельную структуру или enum
enum DesignSystem {
enum Colors {
static let primary = Color("Primary")
static let background = Color("Background")
}
enum Fonts {
static let button = Font.system(size: 16, weight: .semibold)
}
}
struct PrimaryButton: View {
let title: String
let action: () -> Void
var body: some View {
Button(action: action) {
Text(title)
.font(DesignSystem.Fonts.button)
.frame(maxWidth: .infinity)
.padding(.vertical, 12)
.padding(.horizontal, 24)
.background(DesignSystem.Colors.primary)
.foregroundColor(.white)
.cornerRadius(8)
}
}
}
// Использование
PrimaryButton(title: "Войти", action: { ... })
Преимущества:
- Консистентность: Единый внешний вид во всем приложении.
- Скорость разработки: Готовые компоненты ускоряют создание новых экранов.
- Простота поддержки: Изменение дизайна в одном месте применяется ко всему приложению.
Дополнительно: Для больших команд можно выносить дизайн-систему в отдельный Swift Package.
Ответ 18+ 🔞
А, дизайн-системы, блядь! Да, имел счастье, ёпта, в них ковыряться. Поддерживал одну такую штуку в iOS-приложениях — целая эпопея, в рот меня чих-пых!
Как мы это, сука, делали:
- Единый источник истины, блядь! Всё плясало от макетов в Figma. Там сидели наши дизайнеры, как пауки в банке, и плодили токены — цвета, шрифты, отступы, эти ваши радиусы скругления. И мы, блядь, должны были это всё в код перетащить, чтобы не было расхождений, а то дизайнер прибежит: «Почему тут не 8, а 9 пикселей, а? Пидор?».
- Реализация в коде, ёбана:
- SwiftUI: Ну тут в кайф, если честно. Наделал кучу переиспользуемых
View— кнопки, поля, карточки. Красота. - UIKit: Тут уже веселее, блядь. Подклассы всякие,
UIAppearanceдля глобальной стилизации — в общем, геморрой, но терпимый.
- SwiftUI: Ну тут в кайф, если честно. Наделал кучу переиспользуемых
Вот, смотри, как кнопку на SwiftUI делал, чтоб ты понимал масштаб:
// Токены вынес, как умный, в отдельную структуру. Нехуй по коду размазывать!
enum DesignSystem {
enum Colors {
static let primary = Color("Primary") // Главный цвет, блядь
static let background = Color("Background")
}
enum Fonts {
static let button = Font.system(size: 16, weight: .semibold) // Шрифт для кнопки, ёпта
}
}
struct PrimaryButton: View {
let title: String
let action: () -> Void // Замыкание, которое вызовется при нажатии
var body: some View {
Button(action: action) {
Text(title)
.font(DesignSystem.Fonts.button) // Берём шрифт из системы
.frame(maxWidth: .infinity) // Чтоб растягивалась
.padding(.vertical, 12) // Отступы сверху-снизу
.padding(.horizontal, 24) // Отступы слева-справа
.background(DesignSystem.Colors.primary) // Фон — наш главный цвет
.foregroundColor(.white) // Текст белый
.cornerRadius(8) // Закругление, блядь
}
}
}
// Использование — одно удовольствие, ёбана!
PrimaryButton(title: "Войти", action: { print("Нажали, сука!") })
И в чём, блядь, профит, спросишь?
- Консистентность, ёпта! Всё приложение выглядит единообразно, а не как солянка из говна и палок. Дизайнер спит спокойно.
- Скорость разработки — овердохуища! Не надо каждый раз кнопку с нуля лепить. Берёшь готовый компонент и тыкаешь его куда надо. Новые экраны растут как грибы.
- Поддержка — просто пиздец как легко! Захотел поменять цвет всех кнопок в приложении? Блядь, идёшь в один файл, меняешь один токен — и вся система обновилась. Волшебство, ёпта!
Ну и для полного счастья: Если команда большая и проектов дохуя, можно эту дизайн-систему выпилить в отдельный Swift Package. Чтоб все, сука, могли на неё подписаться и не костылять велосипеды. Умно, да?