0
我在视图控制器的另一个顶部有很多视图,我试图模拟一个标签栏。用户可以点击菜单中的任何按钮,并根据点击哪个按钮来呈现视图。所有其他视图将隐藏。在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
}
}
}
我基本上改变了视图的alpha。假设您想呈现主视图。这是层次结构最底层的观点。我只是隐藏所有的意见。假设我想在层次结构的顶部,即设置视图中呈现视图。我隐藏所有视图,然后显示设置视图。
我该如何解决这个/更好地做到这一点?
很好的答案,很好的一个 – Fattie