Что такое UIView в iOS?

Ответ

UIView — фундаментальный класс фреймворка UIKit, представляющий прямоугольную область на экране. Это базовый строительный блок для всех элементов пользовательского интерфейса.

Основные обязанности:

  • Отрисовка и композиция: Управляет своим содержимым (цвет, изображения, текст) и отрисовывает его в своих границах (bounds).
  • Иерархия и геометрия: Существует внутри иерархии UIView (родительские superview и дочерние subviews). Определяет своё положение (frame, center) и размер (bounds) относительно системы координат родителя.
  • Обработка событий: Отвечает на касания и жесты через методы жизненного цикла (touchesBegan, touchesMoved, touchesEnded).
  • Анимация: Поддерживает анимированные изменения свойств через блоки UIView.animate(withDuration:...).

Ключевые свойства и методы:

// Создание и геометрия
let view = UIView(frame: CGRect(x: 20, y: 20, width: 100, height: 100))
view.backgroundColor = .systemBlue
view.alpha = 0.8
view.isHidden = false

// Управление иерархией
parentView.addSubview(view) // Добавить как subview
view.removeFromSuperview()  // Удалить из иерархии

// Анимация
UIView.animate(withDuration: 0.3) {
    view.alpha = 1.0
    view.center.y += 50
}

Важно: Для кастомной отрисовки переопределяйте метод draw(_ rect: CGRect), но делайте это осторожно, так как его вызовы требуют ресурсов. Для динамического контента часто эффективнее использовать готовые UILabel, UIImageView или слои (CALayer).

Ответ 18+ 🔞

Давай разберём этот ваш UIView, а то смотрю — народ путается, как мухи в паутине, блядь.

Представь себе, что UIView — это такой фундаментальный кирпич, из которого строится весь интерфейс в айфонах. Прямоугольная область на экране, ёпта. Всё, что ты видишь — кнопки, картинки, текст — это либо он сам, либо его дети, внуки и правнуки по иерархии, блядь.

Чем этот кирпич, сука, занимается?

  • Рисует свою жопу. Сам отвечает за то, что у него внутри: цвет, картинку, текст. Всё это он аккуратненько в свои границы (bounds) упаковывает и на экран вываливает.
  • Знает своё место в семье. Существует в строгой иерархии, блядь. У него есть родитель (superview) и могут быть дети (subviews). И он чётко знает, где он стоит относительно папаши — это его frame и center.
  • Чувствует прикосновения. Тыкнул пальцем — он это почувствовал через свои методы touchesBegan, touchesMoved. Не какой-то бесчувственный кусок кода, а живой, блядь!
  • Умеет двигаться красиво. Может не просто прыгнуть из точки А в точку Б, а сделать это с анимацией, плавненько, через UIView.animate. Эстетика, ёпта!

Основные штуки, которые надо знать:

// Родили мы вьюху, блядь. Вот она, лежит.
let view = UIView(frame: CGRect(x: 20, y: 20, width: 100, height: 100))
view.backgroundColor = .systemBlue // Сделали её синей, как тоска
view.alpha = 0.8 // Чуть-чуть прозрачной, для загадочности
view.isHidden = false // И показали всем, а не спрятали, как трус

// Определили ей семью
parentView.addSubview(view) // Вот твой папа, живи у него
view.removeFromSuperview()  // Всё, свободен, иди нахуй из семьи

// Заставили пошевелиться
UIView.animate(withDuration: 0.3) {
    view.alpha = 1.0 // Стал полностью видимым
    view.center.y += 50 // И съехал на 50 точек вниз
}

А теперь, блядь, важный момент на засыпку.
Если тебе надо нарисовать что-то своё, кастомное — есть метод draw(_ rect: CGRect). Его можно переопределить. Но, сука, делай это с умом! Каждый его вызов — это пиздец какие ресурсы. Не дрочи его понапрасну. Часто проще и эффективнее взять готовые вещи: UILabel для текста, UIImageView для картинок или вообще копнуть глубже, до слоёв (CALayer). Не изобретай велосипед, где можно взять самокат, блядь.