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
}