Работали ли вы с дизайн-системой в iOS-проекте?

Ответ

Да, имел опыт разработки и поддержки дизайн-системы (Design System) в iOS-приложениях.

Реализация и подход:

  1. Единый источник истины: Компоненты и стили создавались на основе макетов в Figma, где были определены токены (цвета, шрифты, отступы, радиусы скругления).
  2. Реализация в коде:
    • SwiftUI: Создавал переиспользуемые View-компоненты (кнопки, текстовые поля, карточки).
    • UIKit: Использовал подклассы (UIButton, UILabel) и UIAppearance для глобальной стилизации.

Пример компонента кнопки в 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-приложениях — целая эпопея, в рот меня чих-пых!

Как мы это, сука, делали:

  1. Единый источник истины, блядь! Всё плясало от макетов в Figma. Там сидели наши дизайнеры, как пауки в банке, и плодили токены — цвета, шрифты, отступы, эти ваши радиусы скругления. И мы, блядь, должны были это всё в код перетащить, чтобы не было расхождений, а то дизайнер прибежит: «Почему тут не 8, а 9 пикселей, а? Пидор?».
  2. Реализация в коде, ёбана:
    • SwiftUI: Ну тут в кайф, если честно. Наделал кучу переиспользуемых View — кнопки, поля, карточки. Красота.
    • UIKit: Тут уже веселее, блядь. Подклассы всякие, UIAppearance для глобальной стилизации — в общем, геморрой, но терпимый.

Вот, смотри, как кнопку на 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. Чтоб все, сука, могли на неё подписаться и не костылять велосипеды. Умно, да?