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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

4回答

1285閲覧

[swift/iOS]ナビゲーションバーが表示できない

entaro12345

総合スコア75

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

1クリップ

投稿2020/05/01 04:40

編集2020/05/01 07:44

前提・実現したいこと

swift言語を使用して、iOSアプリ開発をしております。
ナビゲーションバーを特定のページのみに表示したいと思い、調べた方法でやってみたのですが、
最初は、表示できなかったので、別の方法で試してみたところ表示はできましたが、色の変更の方法がわからずで悩んでおります。
お力を貸してください。

※どちらの方法でも表示できればいいと思っております。

<追記>
TsukubaDepot様にご回答いただきました通りの実装をしても、貼り付けました画像のようになってしまいます。
(透明色で覆われてしまう。という表記が正しいか微妙なのですが。)
nav.backgroundColor = .red
イメージ

<追追記>
UINavigationBarAppearanceを試みましたが、下記のようなエラーが出てしまいます。
イメージ説明

該当のソースコード

swift

1override func viewDidLoad() { 2 super.viewDidLoad() 3 4 // ①:表示ができない方法 5 self.navigationItem.title = "test" 6 self.navigationController?.navigationBar.titleTextAttributes = [ 7 .foregroundColor: UIColor.white 8 ] 9 self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "戻る", style: .plain, target: nil, action: nil) 10 11 // ②:表示はできたが、色の変更方法がわからない 12 let nav = UINavigationBar() 13 nav.frame = CGRect(x: 0, y: 45, width: self.view.frame.width, height: 50) 14 let navItem:UINavigationItem = UINavigationItem(title: NSLocalizedString("IniRadioWave_Title", tableName: "Resource", comment: "")) 15 navItem.leftBarButtonItem = UIBarButtonItem(title: "< 戻る", style: .plain, target: nil, action: #selector(ConfirmStop)) 16 nav.pushItem(navItem, animated: true) 17 self.view.addSubview(nav) 18}

補足情報(FW/ツールのバージョンなど)

MacOS HighSieera
Xcode 10.1
swift 3.1

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

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

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

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

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

TsukubaDepot

2020/05/01 06:32

(2)の方法で、 nav.backgroundColor = .red などと指定する方法とはまた違った方法でしょうか。 どこをどのように変更したい、という説明があればまた違う回答がつくかもしれませんので、質問に追記していただけますでしょうか。
entaro12345

2020/05/01 07:20

ご回答ありがとうございます。 ご連絡いただいた方法で実装してみても、赤の上に透明色が覆われている感じになってしまっております。 追記いたします。
guest

回答4

0

ベストアンサー

表示じゃなくて色の変更ってことで。

swift

1nav.barTintColor = UIColor.orange

最近のは表面にフィルタ?がかかってて、単純に指定した色になってくれなかったりします。
(たしかUISegmentedControlとかでそうだったような気がします。)

ビューの階層などもチェックして、適切なプロパティの値を変えていって、希望する状態に近づけてみてください

↓~~微妙に古いから質問者さんの環境でいけるかな?
https://capibara1969.com/933/
~~

↓swift3.1なのでこのへんで
https://re-engines.com/2017/10/06/swift3-ナビゲーションバーとステータスバーの色変更

投稿2020/05/01 09:05

編集2020/05/01 09:23
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

entaro12345

2020/05/06 23:30

回答ありがとうございます。 コメントが遅くなり大変申し訳ございません。 いただいたやり方で色の変更ができることが確認できました。 ありがとうございました。
guest

0

一連の画面を UINavigationController の管理下に置いて、viewWillAppear で setNavigationBarHidden を呼ぶ方法もあります。

swift

1 override func viewWillAppear(_ animated: Bool) { 2 super.viewWillAppear(animated) 3 4 // ナビゲーションバーを隠したい画面では true にする。 5 navigationController?.setNavigationBarHidden(true, animated: true) 6 7 // ナビゲーションバーを表示する画面では false にする。 8 navigationController?.setNavigationBarHidden(false, animated: true) 9 }

投稿2020/05/01 08:54

hoshi-takanori

総合スコア7901

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

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

entaro12345

2020/05/06 23:32

回答ありがとうございます。 コメントが遅くなり大変申し訳ございません。 willViewAppearから呼ぶ方法もあるのですね。 そちらのやり方も今後のために勉強してみます。
guest

0

NavigationControllerの管理下にないのに <戻る があるのが
よくわからないですが
この ViewController を ViewController.swift だとしたら
遷移元のクラスで UINavigationController に入れちゃえばいいかもです。

let nav = UINavigationController() let vc = ViewController() nav.viewControlers = [vc] present(nav, animated: true, completion: nil)

あとは遷移先のクラスでカスタマイズすればいけるかな。
全然意図していたものと違ってたらすみません。

投稿2020/05/01 08:13

TakuyaAso

総合スコア1361

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

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

entaro12345

2020/05/01 08:27

ご回答ありがとうございます。 遷移前のViewController内でNavigationControllerを作成してしまうという認識で合っていますでしょうか?
thyda.eiqau

2020/05/01 12:49

これ私もよくやります。私は .viewControllers に入れるのではなくて UINavigationController(rootViewController: viewController) にしますが、中身は同じですね。 > entaro12345さん あっています。
entaro12345

2020/05/06 23:33

ご返信ありがとうございます。 コメントが遅くなり大変申し訳ございません。 そういうやり方もあるのですね。 大変勉強になります。
guest

0

たぶん、こういう方法だと思いますが...

swift

1let appearance = UINavigationBarAppearance() 2appearance.backgroundColor = .systemGreen 3appearance.titleTextAttributes = [.foregroundColor: UIColor.white] // With a green background, make the title more readable. 4nav.standardAppearance = appearance

このページの Appearance あたりがお探しの実装方法に関連してくるかと思います。

投稿2020/05/01 07:36

TsukubaDepot

総合スコア5086

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

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

entaro12345

2020/05/01 07:42

ご回答ありがとうございます。 せっかくご回答いただいたのですが、バージョンが古いせいか対応していないらしく エラーが出てしまいます。 エラー内容も追記いたします。
TsukubaDepot

2020/05/01 07:48

そういえばSwift3.1/Xcode10.1の環境でしたね。 UINavigationBarAppearanceもXcode13以降でしか使えないみたいです(試しにターゲットをiOS10あたりまで落としてやってみましたが、コンパイル時エラーとなってしまいました)。
entaro12345

2020/05/01 07:56

試していただき恐縮です。 環境が古くて対応してないらしいんですよね。 せっかく情報いただいたのに申し訳ないです。
TsukubaDepot

2020/05/01 08:00

たとえば、Google検索などで「uinavigationbar appearance translucent」あたりをキーワードに調べたら、古い情報が出てきたりしないでしょうか。 いくつかあるようですが、試すことができないためあくまでもご助言にしか過ぎませんが。
entaro12345

2020/05/01 08:12

アドバイスありがとうございます。 検索して、いろいろ試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問