2017-10-27 16 views
1

画面の上部に表示され、しばらくしてから消えてから、後で再び表示されるような情報ビューを作成したいと思います。iOS - 画面上部の非表示のUIView

私はUIViewのを作成し、設定した制約:

topInfoView.leadingAnchor.constraint(equalTo: mainView.leadingAnchor) 
topInfoView.trailingAnchor.constraint(equalTo: smainView.trailingAnchor) 
topInfoView.heightAnchor.constraint(equalToConstant: HEIGHT) 

クローズ状態: topInfoView.topAnchor.constraint(equalTo:mainView.topAnchor、定数:-height)

オープン状態: topInfoView。 topAnchor.constraint(equalTo:mainView.topAnchor、定数:0)

ここで、mainViewはメインUIViewCcontrollerです。

私はHEIGHTを私のユーザーの高さ+ "ステータスバーの高さ"(バッテリー、Wi-Fiなどのバー)に設定しました。問題は、ステータスバーの高さが0で、topInfoViewが正しく配置されないことがあることです。私はこれを経由して、「ステータスバーの高さ」を取得しています:

func statusBarHeight() -> CGFloat { 
    let statusBarSize = UIApplication.shared.statusBarFrame.size 
    return Swift.min(statusBarSize.width, statusBarSize.height) 
} 

が、それは時々ではない作品(?ビューがinitedされていない)と私はまた、ステータスバーが異なって解決している新しいiPhone X、わからないです。高さを計算せずに他の方法がありますか?

+0

再びそれを表示するためにtopInfoView.isHidden = falseそれを隠すために topInfoView.isHidden = trueを使用して、 必要があります'viewDidLayoutSubview'で取得します – Tj3n

+0

@ Tj3nなぜ私はステータスバーの高さに直接基づいていない別の解決策を探しています。 –

答えて

1

垂直スタックビューを使用します。 tableViewとビューを縦に並べて配置します。テーブルビューの高さを設定します。スタックビューの配布プロパティはのままにしておきます。テーブルビューのコンセントを作成します。この構成では、テーブルビューを非表示にすると、ビューが全体の領域に表示されます。再びisHiddenプロパティをテーブルビューのfalseに設定すると、テーブルビューとビューは元の配置として表示されます。優れたユーザーエクスペリエンスを提供するために、表の表示を隠したり表示したりしながらアニメートすることができます。

+0

サンプルコードを投稿してください。私はかなりtableViewに従っていない。 –

+0

申し訳ありません。私はそのテーブルビューを考えました。ちょうど5分待つ。 –

+0

[github repository with sample project]を確認してください(https://github.com/keshavRaj/HideableInfoViewForStackOverflowAnswer.git) –

0

あなたはちょうどあなたがviewDidLoad` `でビューの高さを取得しようとしている場合、レイアウトが終了していないので、それは、間違っているかもしれません

関連する問題