swift uiviewcontroller uiscrollview swift3 statusbar

Lag/Screen se congela al ocultar dinĂ¡micamente la barra de estado en una vista de desplazamiento(Swift 3)



uiviewcontroller uiscrollview (1)

Eliminar scrollViewWillBeginDecelerating . Tratar:

func scrollViewDidScroll(_ scrollView: UIScrollView) { let currentScrollPosition : CGFloat = scrollView.contentOffset.x / scrollView.frame.size.width let page = lroundf(Float(currentScrollPosition)) if page != currentPage { currentPage = page if currentPage == 0 { isStatusBarPreferablyHidden = true } else { isStatusBarPreferablyHidden = false } self.setNeedsStatusBarAppearanceUpdate() } }

Actualmente estoy usando una Scroll View con diferentes páginas. Mi objetivo es ocultar la Status Bar en una página específica. Hay un retraso realmente molesto y la pantalla se congela cada vez que la Status Bar está a punto de reaparecer o desaparecer.

Este es mi enfoque:

Antes que nada, definí dos variables

private var currentPage = 0 private var isStatusBarPreferablyHidden = true

Luego utilicé dos funciones del delegado de la vista de desplazamiento para llamar a setNeedsStatusBarAppearanceUpdate cuando el usuario se desliza a la primera página

func scrollViewDidScroll(_ scrollView: UIScrollView) { let currentScrollPosition : CGFloat = self.navigation.contentOffset.x / self.navigation.frame.size.width currentPage = lroundf(Float(currentScrollPosition)) } func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) { if currentPage == 0 { isStatusBarPreferablyHidden = true } else { isStatusBarPreferablyHidden = false } self.setNeedsStatusBarAppearanceUpdate() }

Finalmente anulé las funciones de la barra de estado para actualizar la apariencia de la barra de estado.

override var prefersStatusBarHidden: Bool { return isStatusBarPreferablyHidden } override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation { return UIStatusBarAnimation.none }