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
我目前是 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