Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Как реализовать UIScrollView "вручную" с использованием UIView?
Создайте контейнер UIView, добавьте в него контентную вью большего размера, установите pan-жест (UIPanGestureRecognizer) на контейнер, а в обработчике изменяйте bounds.origin или transform контента в зависимости от сдвига пальца. При касании и перемещении контента вручную обновляете положение вью для имитации прокрутки.
Чем отличается UIView от CALayer?
UIView — это объект верхнего уровня, отвечающий за обработку событий, Auto Layout, иерархию вью и взаимодействие с контроллерами. CALayer — низкоуровневый графический слой, отвечающий за отрисовку, анимацию, содержимое и маскировку. Каждая вью содержит один layer, но слоёв может быть больше для сложных визуальных эффектов.
Какие методы участвуют в процессе layout у UIView? А если что-то подобное с констрейнтами?
Основные методы:
layoutSubviews() — вызывается для перерасчета позиций.
setNeedsLayout() — помечает view для обновления.
layoutIfNeeded() — немедленный перерасчет.
Для констрейнтов: система Auto Layout вызывает эти методы автоматически.
Нужно ли использовать [weak self] внутри UIView.animate? (Нет)
Нет, использовать [weak self] внутри UIView.animate(withDuration:animations:) не нужно. Система анимаций UIKit выполняет переданное замыкание и сразу освобождает его после завершения анимации. Это не приводит к созданию цикла сильных ссылок, так как замыкание не сохраняется надолго.
Как хранить weak-ссылки на объекты (например, UIViewControllers) в массиве?
Обычный Swift-массив (Array) хранит сильные ссылки на объекты. Чтобы хранить weak-ссылки, можно использовать два основных подхода:
Обертка (Wrapper): Создать структуру или класс-обертку, которая содержит weak-ссылку, и хранить эти обертки в массиве.
NSPointerArray: Использовать класс из Foundation NSPointerArray, сконфигурированный для хранения weak-ссылок с помощью .weakMemory option.
Как устроен жизненный цикл UIViewController и в каком порядке вызываются его методы?
В чем разница между UIView и CALayer?
Как устроена связь между UIView и CALayer?
Рейтинг:
5
Сложность:
6
Жизненный цикл UIViewController — это последовательность методов, которые вызываются системой при создании, показе и скрытии экрана. Сначала контроллер создаётся, затем загружается его view, после чего экран появляется и исчезает. Каждый этап имеет свои методы, предназначенные для конкретных задач. Правильное использование этих методов помогает избежать багов и утечек памяти.
Рейтинг:
5
Сложность:
6
UIView отвечает за отображение и обработку пользовательских событий. CALayer занимается отрисовкой и анимациями на более низком уровне. UIView всегда содержит слой, но слой не знает о view. CALayer работает быстрее, так как не участвует в responder chain. Эти объекты тесно связаны, но выполняют разные роли.
Рейтинг:
5
Сложность:
6
Каждый UIView имеет свой CALayer. View управляет жизненным циклом слоя. Слой отвечает за отрисовку и анимации. Изменения свойств UIView отражаются на слое. Эта связка обеспечивает удобство и производительность.
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
5
Рейтинг:
1
Сложность:
6
Рейтинг:
2
Сложность:
7