我目前正在重新构建一个应用程序,该应用程序使用Google Place API中的PlacePicker来获取用户随后可以在我的地图上添加的数据。
过去,我使用了 GMSPlacePicker ,自Google发布Place API 2.3以来,它已被弃用。因此,我目前正在尝试通过 GMSPlacePickerViewController 迁移到他们使用API的新方式,根据Google可以使用自定义UI实现。
来自Google的documentation:
由于地点选择器是普通视图控制器,因此可以显示它 任何你想要的方式。例如,在一个popover,全屏,推到一个 导航堆栈,甚至是自定义应用UI 的一部分。
我已经设法让GMSPlacePickerViewController成为我更广泛的导航控制器的一部分,让我在地方选择器的屏幕内来回走动,但是我还没有设法自定义我们在第三个看到的搜索栏的UI屏幕如下图所示。
SearchBar中的文字是黑色的,我想把它变成白色,但我不知道如何访问searchBar及其属性,因为一切似乎都是在框架中抽象出来的。我还想将标题“选择一个位置”(屏幕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)
此外,searchBarTextAttributes是一个字典,因此可以随意添加更多属性以进一步自定义。
let searchBarTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
UITextField.appearance(whenContainedInInstancesOf:[UISearchBar.self]).defaultTextAttributes = searchBarTextAttributes