作者:chenliuyan13 | 来源:互联网 | 2023-01-18 12:24
我正在使用UISearchController作为导航栏的一部分,使用iOS 11中引入的新API.我在ViewController的viewDidLoad中以下列方式使用它
- (void)viewDidLoad {
[super viewDidLoad];
[_table setDataSource:self];
[_table setDelegate:self];
searchCOntroller= [[UISearchController alloc] initWithSearchResultsController:nil];
[self.navigationItem setSearchController:searchController];
[self.navigationItem setHidesSearchBarWhenScrolling:NO];
[searchController.searchBar setBackgroundColor:[UIColor greenColor]];
}
但是,搜索文本字段将呈现在搜索栏内的错误位置.请看下面的截图.
https://imgur.com/a/Igf49
我检查了视图层次结构,发现搜索栏中的UISearchBarTextField对象(不能直接访问devs)的frame.y值为1,这可能导致此问题.我已经在iOS 11 beta 10和iOS 11 GM上测试了这个.
这是一个已知的问题?有没有解决这个问题?或者是我在我身上做错了什么?
任何帮助将不胜感激 (:
1> Adam Studeni..:
这是代码,显示如何在iOS 11上的searchBar中更改textField的背景颜色.
之前:
后:
Obj-C: in(void)viewDidLoad使用此代码:
if (@available(iOS 11, *)) {
UITextField *textField = [self.searchController.searchBar valueForKey:@"searchField"];
UIView *backgroundView = textField.subviews.firstObject;
backgroundView.backgroundColor = UIColor.whiteColor;
backgroundView.layer.cornerRadius = 10;
backgroundView.clipsToBounds = YES;
}
Swift:在viewDidLoad()中使用以下代码:
if #available(iOS 11.0, *) {
if let textfield = scb.value(forKey: "searchField") as? UITextField {
textfield.textColor = UIColor.blue
if let backgroundview = textfield.subviews.first {
backgroundview.backgroundColor = UIColor.white
backgroundview.layer.cornerRadius = 10;
backgroundview.clipsToBounds = true;
}
}
}
我一直在寻找这个答案几个小时。+10000