iOS Swift 3 - 有没有人设法实现 Google Place API 的带有自定义 UI 的新 GMSPlacePickerViewController?

iOS Swift 3 - Did anyone manage to implement Google Place API's new GMSPlacePickerViewController with custom UI?

我目前是 re-building 一个应用程序,它使用来自 Google 地点 API 的 PlacePicker 来获取用户随后可以添加到我的地图上的数据。

过去,我使用 GMSPlacePicker,自从 Google 发布他们的 Place API 2.3 后,现在已弃用。所以我目前正在尝试通过 GMSPlacePickerViewController 迁移到他们使用 API 的新方法,根据 Google 可以使用 Custom [=49= 实现].

来自Google的documentation

As the place picker is a normal view controller it can be displayed any way you want. For example, in a popover, fullscreen, pushed onto a navigation stack, or even as part of a custom app UI.

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

问题:

SearchBar里面的文字是黑色的,我想把它变成白色,但是我不知道如何访问searchBar和它的属性,因为框架中的一切似乎都是抽象的。我还想将标题 'Select a location'(屏幕 2)更改为更小的内容。

有什么想法吗?提前致谢

您应该可以使用 UIAppearance 代理更改此设置,如 Use the UIAppearance Protocol 中所述(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;

Andrew 的回答最终对我有用。我已将其转换为 Swift 3.0,以供将来可能需要的人使用。您只需将以下内容添加到 AppDelegate.swift 文件的 didFinishLaunchingWithOptions 中:

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

let searchBarTextAttributes = [NSForegroundColorAttributeName: UIColor.white]

UITextField.appearance(whenContainedInInstancesOf:[UISearchBar.self]).defaultTextAttributes = searchBarTextAttributes