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
}
}
}
私は基本的にビューのアルファを変更しています。ホームビューを提示したいとします。これは、階層の最下部にあるビューです。私はすべてのビューを隠すだけです。階層の一番上、つまり設定ビューにビューを表示したいとします。すべてのビューを非表示にしてから、設定ビューを表示します。
どうすればこの問題を解決できますか?
を機能を追加します素敵な答え、良いもの – Fattie