我在我的应用中使用GMSPlacePicker。它有一个非常简单的API:
CLLocationCoordinate2D center = currentLocation.coordinate;
CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(center.latitude + 0.02, center.longitude + 0.02);
CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(center.latitude - 0.02, center.longitude - 0.02);
GMSCoordinateBounds *viewport = [[GMSCoordinateBounds alloc] initWithCoordinate:northEast
coordinate:southWest];
GMSPlacePickerConfig *config = [[GMSPlacePickerConfig alloc] initWithViewport:viewport];
_placePicker = [[GMSPlacePicker alloc] initWithConfig:config];
[_placePicker pickPlaceWithCallback:^(GMSPlace *place, NSError *error) {
}];
此刻,它会自动显示在ViewController上。还有一个搜索功能,允许用户使用文本搜索该地点。
但是,我的应用主题是黑色的,我使用UIAppearance代理设置了导航栏颜色:
[[UINavigationBar appearance] setBarTintColor:[UIColor blackColor]];
[[UINavigationBar appearance] setTranslucent:NO];
这导致搜索出现问题,因为导航栏背景为黑色,因此无法看到搜索文本。
我也尝试使用UIAppearance代理建议here无效。
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor whiteColor]];
答案 0 :(得分:2)
这对我有所帮助:
[[UISearchBar appearance] setBarStyle:UIBarStyleBlack]
答案 1 :(得分:0)
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTintColor:[UIColor whiteColor]];
答案 2 :(得分:0)
我在使用Google Maps API时面临同样的问题,并通过以下代码行找到了我的解决方案:
[[UITextField appearanceWhenContainedIn:[<Object of your Google Maps API class(like GMSAutocompleteViewController)>.searchDisplayController.searchBar class], nil] setDefaultTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}];
在制作Google Maps API类的对象之后以及出示该课程之前添加上述行。
上面接受的答案也适用于这种情况并且很明显,但是这行代码将为搜索栏中的文本设置默认的黑色。
通过使用我的答案,可以将文本颜色更改为iOS中可用的任何自定义颜色。