Какие основные компоненты фреймворка UIKit?

Ответ

UIKit — это основной фреймворк для построения пользовательских интерфейсов в iOS и tvOS. Его ключевые компоненты можно разделить на несколько категорий:

Базовые классы:

  • UIView — базовый прямоугольный элемент, на котором строится весь интерфейс.
  • UIViewController — управляет группой представлений (UIView), обрабатывает логику экрана и его жизненный цикл.
  • UIResponder — базовый класс для объектов, которые могут обрабатывать и реагировать на события (касания, встряхивания, команды с клавиатуры).

Основные элементы управления (Controls):

  • UIControl — базовый класс для интерактивных элементов.
  • UIButton — кнопка, выполняющая действие при нажатии.
  • UILabel — отображение статического текста.
  • UITextField — однострочное поле для ввода и редактирования текста.
  • UISwitch, UISlider, UIStepper — элементы для выбора значений.

Контейнеры и навигация:

  • UIScrollView — базовый класс для отображения прокручиваемого контента.
  • UITableView / UICollectionView — высокооптимизированные компоненты для отображения прокручиваемых списков и сеток данных.
  • UIStackView — контейнер для автоматического расположения представлений в строку или колонку.
  • UINavigationController — управляет стеком контроллеров для иерархической навигации.
  • UITabBarController — управляет переключением между независимыми разделами приложения.

Пример создания кнопки и добавления её на экран:

// 1. Создание кнопки системного стиля
let button = UIButton(type: .system)
// 2. Установка заголовка
button.setTitle("Нажми меня", for: .normal)
// 3. Установка позиции и размера (используя Auto Layout)
button.translatesAutoresizingMaskIntoConstraints = false
// 4. Добавление обработчика нажатия
button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
// 5. Добавление кнопки в иерархию представлений
view.addSubview(button)
// 6. Активация констрейнтов для позиционирования
NSLayoutConstraint.activate([
    button.centerXAnchor.constraint(equalTo: view.centerXAnchor),
    button.centerYAnchor.constraint(equalTo: view.centerYAnchor)
])

@objc func buttonTapped() {
    print("Кнопка была нажата")
}

Ответ 18+ 🔞

А, UIKit, блядь! Ну, это как бы наш старый добрый дедушка, на котором всё держится в айфонах и теликах. Без него нихуя не соберёшь, если, конечно, не пошёл в эту новомодную хуйню SwiftUI, но это другая история, в рот меня чих-пых.

Смотри, тут всё просто, но дохуя всего. Разложим по полочкам, как нормальные люди.

Базовые кирпичи, с них всё начинается:

  • UIView — это просто прямоугольник, ёпта. Всё, что ты видишь на экране — кнопка, текст, картинка — это либо он сам, либо его дети. Фундамент, блядь.
  • UIViewController — это главный по тарелке. У него своя жизнь: родился, показался, свернулся, помер. Он командует этими вьюхами, логику пихает, в общем, мозг экрана.
  • UIResponder — а это типа ушастый. Всё, что от него наследуется, может слышать: тыкнули пальцем, тряхнули телефон, клаву нажали — он это поймает.

Всякие штуки, на которые можно тыкать (Controls):

  • UIControl — папа всех кликабельных прибамбасов.
  • UIButton — ну, кнопка, сука, что тут объяснять? Тыкнул — что-то произошло.
  • UILabel — просто текст. Поставил и забыл. Не кликается, нихуя.
  • UITextField — поле, куда юзер свой бред вводит. Одна строчка.
  • UISwitch, UISlider, UIStepper — разные ползунки и переключатели, чтобы значения выбирать. Удобно, бля.

Коробки, в которые всё это складывают, и как по ним ходить:

  • UIScrollView — волшебное окно. Контента дохуя, а экран маленький? Засунь в него — и можно скроллить туда-сюда. Основа основ.
  • UITableView / UICollectionView — это, блядь, мастодонты. Списки и сетки. Если нужно показать сто пятьсот сообщений или фоток — они справятся, не вспотев. Оптимизированы так, что мама не горюй.
  • UIStackView — ленивая жопа. Не хочешь вручную расставлять вьюхи? Кидай в него — он сам ровненько в ряд или столбик выстроит. Красота.
  • UINavigationController — начальник этажей. У тебя есть экран, с него переходишь на другой, потом на третий. Он запоминает этот стек и кнопку «Назад» рисует. Классика.
  • UITabBarController — начальник отделов. Внизу панелька с иконками, тыкаешь — переключаешься между совершенно независимыми разделами приложения. Инстаграм там, вот это всё.

А теперь, сука, смотри, как кнопку из говна и палок собрать:

// 1. Берём кнопку, самую обычную, системную
let button = UIButton(type: .system)
// 2. Пишем на ней что-нибудь умное
button.setTitle("Нажми меня", for: .normal)
// 3. Говорим: "Не вздумай сам себе рамки лепить, я тебя сам размещу!"
button.translatesAutoresizingMaskIntoConstraints = false
// 4. Цепляем на неё ухо: "Когда тебя ткнут, вызови вот этот метод!"
button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
// 5. Вываливаем эту кнопку на главный экран (view)
view.addSubview(button)
// 6. И вот тут магия: говорим, чтоб она встала ровно по центру. Автолейаут, ёпта!
NSLayoutConstraint.activate([
    button.centerXAnchor.constraint(equalTo: view.centerXAnchor),
    button.centerYAnchor.constraint(equalTo: view.centerYAnchor)
])

// А это та самая функция, которую вызовут, когда кнопку ёбнут
@objc func buttonTapped() {
    print("Кнопка была нажата, ебать!")
}

Вот и вся магия, блядь. Сначала кажется, что дохуя сложно, а потом привыкаешь и как по маслу. Главное — начать с этих кирпичей, а не пытаться сразу Эйфелеву башню собирать.