Swift iOS Interview Вопросы и ответы – Часть 2 – Auto Layout и UIKit

Перевод статьи https://ishtiz.com/swift/swift-ios-interview-questions-and-answers-part-2

Часть 2 состоит из вопросов интервью Swift iOS и ответов о пользовательском интерфейсе — Auto Layout и UIKit. Она будет охватывать темы, связанные с пользовательским интерфейсом, такие как frame, bound, autolayout constraints, xib, storyboard, safe area и т. д.

В: Что такое ограничительная рамка(bounding box)?
О: Ограничивающая рамка — это наименьший прямоугольник, полностью охватывающий все точки пути, включая контрольные точки для кривых Безье и квадратичных кривых.

В: Что такое CGpath?
О: Неизменяемый графический путь: математическое описание форм или линий, которые должны быть нарисованы в графическом контексте.

В: Нужна ли weak или unowned ссылка для метода анимации UIView?
О: [Weak self] или [unowned self] используется для предотвращения циклов сохранения(retain cycles). После запуска анимации UIView память освобождается, даже если на нее строго ссылаются. [Weak self] или [unowned self] захват не нужен для блока кода анимации. Вам не нужно использовать [weak self] в статической функции UIView.animate(). Вам нужно использовать weak, когда возможен цикл сохранения и блок анимации не освобождает self. Ссылка на внешний объект, захваченная ими, будет храниться только в течение определенного периода времени, что означает, что она будет выполнена в определенный момент времени. После этого он будет освобожден, поэтому не будет возможности цикла ссылок, который приведет к утечке памяти.

В: В чем разница между frame и bound?
О: Frame – прямоугольник, который имеет положение и размер относительно родительского вью. Bound — прямоугольник, положение и размер которого зависят от собственной системы координат вью.

В: Когда стоит использовать frame, а когда bounds?
О: Frame связывает расположение вью в его родительском вью. Его можно использовать, когда вы вносите внешние изменения, например, изменяете его ширину или находите расстояние между видом и верхом/низом/слева/справа его родительского вью.

Bound нужно использовать тогда, когда вы вносите внутренние изменения, например рисуете элементы или размещаете другие вью в исходном вью. Вы также можете использовать bound, чтобы получить размер представления, если вы выполняете какое-либо преобразование границ.

В: Что такое unwind segue?
О: Перемещение назад через один или несколько segues, чтобы вернуть пользователя к сцене, управляемой существующим контроллером представления.

В: Что такое intrinsic content size?
О: Все вьюшки имеют внутренний размер содержимого, который относится к объему пространства, необходимого для отображения его содержимого в идеальном состоянии. Например, внутренний размер содержимого UILabel будет размером текста, который он содержит, с использованием любого шрифта, который вы настроили для использования.

В: В чем разница между xib и storyboard?
О: Xib определяет отдельную вьюшку или экран, в то время как storyboard показывает множество контроллеров, а также взаимосвязь между ними.

В: В чем разница между полями макета(left/right) и полями направленного макета(learning/trailing)?
О: Свойство полей макета UIView имеет тип UIEdgeInsets и определяет верхнюю, левую, нижнюю и правую вставки, которые при применении к frame вью определяют границу этого вью.
Направленные поля макета, поддерживающие языки справа налево (RTL). Это соответствует шаблону, используемому при создании constraint’ов с якорями макета.

В: Что такое Safe area?
О: Safe area позволяет нам создавать ограничения, чтобы наш контент не был скрыт аппаратными панелями iOS.

В: Что такое content offset?
О: Когда мы прокручиваем scrollView, он изменяет свойство, известное как content offset. Используя это значение, scrollView может вычислить новый размер bound и перерисовать любое из своих дочерних вью.

В: Что такое NSLayoutAnchor?
О: NSLayoutAnchor используется для упрощения написания auto layout в коде.

В: Что такое UIBezierPath?
О: Мы можем определить собственный путь с помощью UIBezierPath для создания любой формы.

В: Что такое reuseIdentifier в UITableView/UICollectionView?
О: ReuseIdentifier указывает, что ячейки для UITableView/UICollectionView можно использовать повторно. UITableView поддерживает внутренний кеш UITableViewCell с соответствующим идентификатором и позволяет повторно использовать их при вызове dequeueForCellWithReuseIdentifier. В результате это повышает производительность UITableView, поскольку для ячейки не нужно создавать новое представление.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *