質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS 9

iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

1704閲覧

【Swift3】指定した画面のステータスバーを隠せない

koto12345

総合スコア8

iOS 9

iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/06/14 08:15

編集2017/06/16 10:30

ある画面でボタンが押された時にステータスバーを隠しを隠す機能を実装したいのですが上手くいきません。
機種はiPhone5sと6[iOS9.3.5]で確認。

####試したこと

class ViewController: UIViewController { var statusBar: Bool = false override var prefersStatusBarHidden: Bool { return statusBar } @objc private func tapButton() { statusBar = true self.setNeedsStatusBarAppearanceUpdate() }

ステータスバーを隠したい画面を上記のように実装してみたのですが、
setNeedsStatusBarAppearanceUpdate()が実行されても、ステータスバーが隠れません。
(ボタンをタップするとtapButton()が毎回呼ばれていることを確認済み)

隠すために何か追加で記述しなければいけないのでしょうか?

####隠したい画面の場所
TabbarController

NavigationController

ViewController

↓ (画面遷移:Push)

ViewController(この画面でステータスバーを隠したい)

####追加確認事項
ViewControllerが1つだけある(画面数が1つ)プロジェクトを作成して、上記のコードを実行した場合はステータスバーが隠れました。
tabbarやnavigation辺りが間違えているのと考えるのがいいのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2017/06/16 08:54 編集

tapButton()が呼ばれていることは確認できていますか?あと、iOSのバージョンと機種を教えて下さい。(ステータスバーを隠すためのコードは問題ないと思います)
koto12345

2017/06/16 09:25

tapButton()の呼び出しは確認済みです。iOSは9.3.5、端末機種はiPhone5s,6です。iOS10以降もいくつか確認してます。
fuzzball

2017/06/19 01:57

「tabbarやnavigation辺りが間違えているのと考えるのがいいのでしょうか」 ← 少なくとも、質問内に書かれている方法やコードに問題はないと思います。
guest

回答1

0

こちらをどうぞ

あげたサイトの方が参考にしたサイトもそのページに載っております

投稿2017/06/16 04:12

RagnAnet1373

総合スコア69

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koto12345

2017/06/16 08:27

ご回答ありがとうございます。 試したことのコードは上げていただいたサイトと同じ方法なのですが、隠れないです。
RagnAnet1373

2017/06/16 08:59

ではtapButton()の中身にprint文を入れて実行してみてください。 もしprintのログが出ない場合はおそらくtapButtonの呼び出しができていないので呼び出し方を変える必要があると言うことになるかと
koto12345

2017/06/16 09:12

tapButton()の中にBreakpointを付けていて、ボタンをタップすると必ず止まるのでtapButton()自体の呼び出しの問題ではなかったです。 ただ、overrideの場所にもBreakpointを付けたのですが、self.setNeedsStatusBarAppearanceUpdate()時に止まらない事が分かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問