web-dev-qa-db-ja.com

iOS 13 SearchController戻るボタンの色

Xcode 11ビルドから実行されているiOS 13にのみ適用される奇妙な視覚的なバグがあります。ナビゲーションコントローラーに埋め込まれたテーブルビューで、デフォルトのティントカラーがアプリのプライマリオレンジ色に設定されています。 iOS12では、検索アクションをキャンセルすると、プライマリオレンジのグローバルナビゲーションコントローラーの色に続く[戻る]ボタンが表示されます。これは予想される動作です。以下に示す画像: Orange Back Arrow in iOS12

ただし、iOS13の同じコードは、次に示すように、システムのデフォルトの青い戻る矢印を生成します。

enter image description here

カスタムアクションでカスタムバーボタンアイテムを作成するなど、その青い戻るボタンを何でも試してオーバーライドしようとしましたが、それは面倒すぎて、単にティントカラーをオーバーライドしたいだけです。明らかなsearchController.searchBar.tintColor = UIColor(named:"Primary")を試してみましたが、searchControllerは私のUISearchControllerであり、self.navigationControllerティントカラーをオーバーライドしようとしました。私はこのようにSearchBarにネイティブでアクセスしてみました:UISearchBar.appearance().tintColor = UIColor(named:"Primary")ですが、まだうまくいきません。私はIBで考えられる他のすべてを試しましたが、この戻るボタンの色合いに到達する方法がわかりません。誰か助けてもらえますか?

6
eResourcesInc

これは、iOS 13.1にのみ影響するXCode/Swiftのバグであることがわかりました。ユーザーベースのごく一部のみが13.1に残っているため、コードで説明する必要があるものであってはなりません。

0
eResourcesInc

これを試して

override func viewWillAppear(_ animated: Bool) {
        self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
        self.navigationItem.backBarButtonItem?.tintColor = .blue
}

0
Fetrindade

IOS 13では、ナビゲーションバーの新しい外観タイプはほとんどありません。大きなタイトルやスクロールビューに関連付けられているナビゲーションバーをカスタマイズする場合は、.scrollEdgeAppearanceの外観パラメーターを設定するだけです。

if #available(iOS 13.0, *) {
        let standartAppearence = UINavigationBarAppearance()
        standartAppearence.configureWithDefaultBackground()

        // Your configuration

        UINavigationBar.appearance().scrollEdgeAppearance = standartAppearence
}
0
Dmitry Kuleshov