2011-08-10 5 views
3

私はタブバーの上にビューを浮かべる方法を考えようとしています。これは本質的にそれをカバーするだろう。私はこれについてどうやって行くのか分からない。タブバー自体が別のコントローラのサブビューである場合、これは簡単に思えるかもしれませんが、私が理解していることから、ビューコントローラの方法論を悪用することなくこれを行うことはできません(addSubview:tabbar.viewなど)。タブバーの前にビューを置く

基本的に、iPhoneの画面にはスペースが限られています。タブバーはナビゲーションですが、そのスペースを使って情報を簡単に表示したいときがあります。タブバーが自分のルートコントローラであれば、これは不可能だと私は思うだろう。

setHidesBottomBarWhenPushedを使用することをお勧めしますが、Navコントローラを使用していない他の記事を読んでいます。また、バーが隠れたり別のビューで覆われたときに動的に制御したいので、必要に応じて新しいビューを表示し、タブバーを再度表示します。

正しい方向で私を指摘する他の提案があれば幸いです。

+0

あなたはUITabBarクラスのサブクラスを作成する必要があります。 またはこちらをご覧ください:http://stackoverflow.com/questions/4020108/how-can-i-create-my-own-uitabbar – CarlJ

+0

私はその質問でBradの答えが好きですタブバー。シンプルでフレキシブル – johnbakers

答えて

1

私は以下を提案します。

UIView 
    | 
    --UIView (this will hold the tab bar controller) 
     | 
     -- Tabbar controller 
    | 
    --Full Screen View 

したがって、タブバーは基本的にUIViewに囲まれています。これはメインのUIViewに追加されます。フルスクリーンを表示する場合は、メインUIビューにそのビューを追加することができます。したがって、タブバーを非表示/非表示にする必要はありません。そのような

+0

タブバーコントローラをUIViewに追加するのに最適な構文は何ですか? 'addSubview:tabbarcontroller.view'を使うのと同じですか? – johnbakers

5

ルートウィンドウを使用できます。 [[UIApplication sharedApplication] keyWindow]からメインウィンドウを取得した場合は、そのウィンドウに直接ビューを追加できます。これにより、画面上のどこにでも何かを浮かべることができます。あなたはまだ回転に対処するための小さな鼻水を持っていますが、自動回転をしていない場合は、それを気にしないほど簡単です。

もう1つのオプションは、実際には新しいUIWindowを作成し、必要な場所に置くことです。これは実際にUIAlertViewが動作する方法です。そうすれば、ビュー階層にはまったく影響しません。このメソッドには、タッチを含むイベントをサブビューにディスパッチするウィンドウが1つしかないという1つの問題があります。したがって、これを使用すると基本的にユーザーは下のバーに触れることができます。最初のオプションは良いかもしれませんが、誰かがそれが有用であると思った場合に備えて、これをそこに投げています。

+0

ありがとう、あなたのトリックはフルクリエンのために働いています –

+0

[[UIApplication sharedApplication] keyWindow]ありがとうございました –

0

何か:

if let indeedTabBarController = self.tabBarController { 

    let buttonHeight: CGFloat = 49 // height of tab bar 
    let buttonWidth = UIScreen.main.bounds.width/3 // in case if you have 3 tabs 
    let frame = CGRect(x: 0, y: UIScreen.main.bounds.height - buttonHeight, width: buttonWidth, height: buttonHeight) 
    let button = UIButton(frame: frame) 
    button.addTarget(self, action: #selector(self.someAction), for: .touchUpInside) 

    indeedTabBarController.view.addSubview(button) 
} 
関連する問題