4

我目前正在重新构建一个应用程序,该应用程序使用 Google Place API 中的 PlacePicker 来获取用户可以添加到我的地图上的数据。

过去,我使用了GMSPlacePicker,自从 Google 发布了他们的 Place API 2.3 以来,它现在已被弃用。因此,我目前正在尝试通过GMSPlacePickerViewController迁移到他们使用 API 的新方式,根据 Google 的说法,这种方式可以使用自定义 UI 来实现。

来自谷歌的文档

由于地点选择器是一个普通的视图控制器,它可以以任何你想要的方式显示。例如,在弹出窗口、全屏、推送到导航堆栈,甚至作为自定义应用程序 UI的一部分。

我已经设法使 GMSPlacePickerViewController 成为我更广泛的导航控制器的一部分,它可以让我在地点选择器的屏幕内来回切换,但是我还没有设法自定义我们在第三个屏幕上看到的搜索栏的 UI下图。

问题:

SearchBar 内的文本是黑色的,我想将其设为白色,但我不知道如何访问 searchBar 及其属性,因为一切似乎都在框架中抽象。我还想将标题“选择位置”(屏幕 2)更改为更小的标题。

有什么想法吗?提前致谢

在此处输入图像描述

4

2 回答 2

1

您应该能够使用UIAppearance代理更改此设置,如使用 UIAppearance 协议(内部GMSPlacePickerViewController使用GMSAutocompleteViewController)中所述。

// Color of typed text in the search bar.
NSDictionary *searchBarTextAttributes = @{
                                          NSForegroundColorAttributeName: lightGray,
                                          NSFontAttributeName : [UIFont systemFontOfSize:[UIFont systemFontSize]]
                                          };
[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]]
    .defaultTextAttributes = searchBarTextAttributes;
于 2017-06-29T05:20:15.600 回答
1

安德鲁的回答最终对我有用。我已经将它转换为 Swift 3.0,以供将来可能需要它的人使用。您可以简单地将以下内容添加到您的AppDelegate.swift文件中的didFinishLaunchingWithOptions

searchBarTextAttributes 也是一个字典,因此可以随意添加更多属性以进一步自定义。

let searchBarTextAttributes = [NSForegroundColorAttributeName: UIColor.white]

UITextField.appearance(whenContainedInInstancesOf:[UISearchBar.self]).defaultTextAttributes = searchBarTextAttributes
于 2017-06-29T08:49:16.753 回答