и посмотреть медиа
Swift | Interview Questions
и посмотреть медиа
Swift interview questions, tests and tasks for iOS developers in Telegram.
Swift interview questions, tests and tasks for iOS developers in Telegram.
AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.
The channel is dedicated to preparing for Swift language interviews. It contains current questions, tests, practical tasks and vacancy information. Ideal for beginner and experienced iOS developers who want to refresh their knowledge and successfully pass interviews.
🤔 Какие изменения надо сделать в constrait перед вызовом layout? Перед вызовом layoutIfNeeded() или layoutSubviews() в iOS-приложении, нужно изменить значение констрейнта и вызвать анимацию, если необходимо. Вот основные шаги: 🟠Обновление значения констрейнта Перед вызовом layoutIfNeeded(), измените свойство констрейнта (например, constant у NSLayoutConstraint). class ViewController: UIViewController { @IBOutlet weak var button: UIButton! @IBOutlet weak var heightConstraint: NSLayoutConstraint! override func viewDidLoad() { super.viewDidLoad() DispatchQueue.main.asyncAfter(deadline: .now() + 2) { self.changeButtonHeight() } } func changeButtonHeight() { heightConstraint.constant = 100 // Меняем значение констрейнта UIView.animate(withDuration: 0.3) { self.view.layoutIfNeeded() // Перестраиваем макет } } } 🟠Если меняется набор констрейнтов Если нужно удалить/добавить констрейнты, используйте `activate()` / `deactivate()`. var expanded = false @IBOutlet weak var smallHeightConstraint: NSLayoutConstraint! @IBOutlet weak var largeHeightConstraint: NSLayoutConstraint! func toggleHeight() { expanded.toggle() if expanded { NSLayoutConstraint.deactivate([smallHeightConstraint]) NSLayoutConstraint.activate([largeHeightConstraint]) } else { NSLayoutConstraint.deactivate([largeHeightConstraint]) NSLayoutConstraint.activate([smallHeightConstraint]) } UIView.animate(withDuration: 0.3) { self.view.layoutIfNeeded() } } 🟠Если работа идёт в `viewDidLoad()` Во viewDidLoad() элементы ещё не отрисованы, поэтому layoutIfNeeded() не сработает. Используйте viewDidAppear() или вызовите layoutIfNeeded() после view.layoutIfNeeded(). override func viewDidLoad() { super.viewDidLoad() heightConstraint.constant = 100 view.layoutIfNeeded() // НЕ обновит макет, потому что он ещё не загружен } Решение override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) heightConstraint.constant = 100 UIView.animate(withDuration: 0.3) { self.view.layoutIfNeeded() } } Разница между layoutIfNeeded() и setNeedsLayout() heightConstraint.constant = 100 view.setNeedsLayout() // Обновление произойдет на следующем цикле рендера Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!