#ios #swift #xcode #uiscrollview
#iOS #swift #xcode — код #uiscrollview
Вопрос:
Я пытаюсь увеличить масштаб до кнопки в UIScrollView. Первая функция — это та, которую я запускаю, если перехожу к vc, вторая запускается с помощью кнопки в представлении.
При выполнении второй функции она работает идеально и правильно центрируется
Однако на первом, несмотря на идентичный код, он имеет смещение в x примерно на 40-50 пикселей (показывает точку слева от кнопки, а не какую-либо ее часть), хотя это смещение изменяется в зависимости от кнопки.
func moveScrollviewToRoom(){
scrollView.zoom(to: artButton.frame, animated: true)
}
@IBAction func moveScrollview(_ sender: Any) {
scrollView.zoom(to: artButton.frame, animated: true)
}
Функция была вызвана здесь:
override func viewDidLoad() {
super.viewDidLoad()
if moveToRoom != "" {
moveScrollviewToRoom()
}
Любая помощь будет с благодарностью
Приветствия!
Комментарии:
1. Когда вы звоните
moveScrollviewToRoom()
? Скорее всего, это произойдет до того, как авто-макет завершит настройку представления. Попробуйте переместить его вviewDidAppear()
.2. Привет, Дон, это было вызвано в super.viewDidLoad() через оператор if . Я обновил вопрос, чтобы показать
Ответ №1:
Две точки…
1 — Представления и подвиды еще не были расположены с помощью автоматической компоновки viewDidLoad()
, поэтому artButton.frame
они будут неправильными.
2 — Вызов любой функции, которая анимирует представление, viewDidLoad()
не даст желаемых результатов, потому что представление еще даже не видно.
Переместите свой вызов на viewDidAppear()
:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if moveToRoom != "" {
moveScrollviewToRoom()
}
}