У меня есть много видов сверху сверху на другом в контроллере вида, и я пытаюсь имитировать панель вкладок. Пользователь может нажать любую кнопку меню, и будет показано представление, по которому была нажата кнопка. Все остальные взгляды будут скрыты.Имитировать панель вкладок в iOS
Я написал следующий код, который не отображает взгляды правильно (иногда они появляются, а другие - нет).
presentViewWithName(.home) // this will present the view at the very bottom of the hierarchy
enum Views {
case home
case sketchpad
case help
case settings
}
func presentViewWithName(name: Views) {
self.turnAlphaOnToEveryMenuButton()
switch name {
case .home:
self.hideAllViews()
self.menuView.buttonHome.dimmerAlpha()
case .sketchpad:
self.sketchpadView.animateToggleAlpha()
self.menuView.buttonSketchpad.dimmerAlpha()
case .help:
self.helpView.animateToggleAlpha()
self.menuView.buttonHelp.dimmerAlpha()
case .settings:
self.settingsView.animateToggleAlpha()
self.menuView.buttonSettings.dimmerAlpha()
}
}
func turnAlphaOnToEveryMenuButton() {
self.menuView.buttonHome.alpha = 1
self.menuView.buttonSketchpad.alpha = 1
self.menuView.buttonHelp.alpha = 1
self.menuView.buttonSettings.alpha = 1
}
func hideAllViews() {
self.settingsView.alpha = 0
self.sketchpadView.alpha = 0
self.helpView.alpha = 0
}
extension UIView {
func animateToggleAlpha() {
UIView.animateWithDuration(0.25) {
self.alpha = self.alpha == 1 ? 0 : 1
}
}
func dimmerAlpha() {
UIView.animateWithDuration(0.25) {
self.alpha = self.alpha == 1 ? 0.4 : 1
}
}
}
Я в основном меняю альфу видов. Предположим, вы хотите представить домашний вид. Это мнение в самом низу иерархии. Я просто скрываю все взгляды. Предположим, что я хочу представить представление на самой вершине иерархии, представление настроек. Я скрываю все представления, а затем представляю представление настроек.
Как я могу исправить это/лучше сделать это?
хороший ответ, хороший – Fattie