web-dev-qa-db-ja.com

iOS 13 UISearchBarの外観と動作

UISearchBarを次のように設定しました。

searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false // Allow user to tap on results
searchController.searchBar.placeholder = "Search patients" // Placeholder
searchController.searchBar.barStyle = .blackOpaque
searchController.searchBar.tintColor = colors.text // Cancel button tint

navigationItem.searchController = searchController // Set the searchController
navigationItem.hidesSearchBarWhenScrolling = true // Auto-hide search when user scrolls

IOS 12では次のようになります。 iOS 12 appearance vs iOS 13: enter image description here iOS 13で何が変更されましたか?別のbarStylesを試してみて、.isTranslucent to false-どちらにも影響しません。ライト/ダークモードも何も変更しません。

その他の変更点は、検索バーを非表示にすることです。iOS12では、上方向に少しスクロールすると、検索バーが非表示になります(テーブルにデータが入力されているかどうかは関係ありませんでした)。 iOS 13では、検索バーが表示されると(つまり、ユーザーが下にスワイプすると)、再び非表示にすることはできません。誰もがこれの修正を知っていますか?

19
user7987142

私はあなたと同じような問題を抱えています。これが現在のiOS 13でなぜ起こり、古いバージョンで適切に動作するのかはわかりません。しかし、私はこの関数をsearchBarに追加することで解決策を見つけました。

if #available(iOS 13.0, *) {
   searchBar.searchTextField.backgroundColor = UIColor.white
}

修正後のプレビュー:

before fixingafter fixing

13
Avendi Sianipar

searchBarStyledefaultとして使用し、searchTextField背景色を変更するにはどうすればよいですか?

if #available(iOS 13.0, *) {
    searchBar.searchBarStyle = .default
    searchBar.searchTextField.backgroundColor = UIColor.black.withAlphaComponent(0.1)
}
8
Tai Le

AppDelegateのようにグローバルに設定する場合:

if #available(iOS 13, *) {
    UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).backgroundColor = .anyColor
}
3
RyuX51

searchController.searchBar.searchTextField.backgroundColor = UIColor.blackは、回避策としてその仕事をします。セレクターはiOS 13の新機能です。

とにかくフィードバックアシスタントについての報告を提出しました。これは予想外の動作だと思います。

3
user7987142