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

时间:2017-06-28 10:40:26

标签: ios swift google-maps google-places-api gmsplacepicker

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

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

来自Google的documentation

  

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

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

问题:

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

有什么想法?提前致谢

enter image description here

2 个答案:

答案 0 :(得分:1)

您应该可以使用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;

答案 1 :(得分:1)

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

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

let searchBarTextAttributes = [NSForegroundColorAttributeName: UIColor.white]

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