在我們?nèi)粘i_發(fā)中,經(jīng)常會(huì)遇到一些需求非要把 UISearchBar 默認(rèn)的圓角矩形的圓角改大,頂端改成圓形的。雖然系統(tǒng)沒(méi)有提供這個(gè) API,不過(guò)還是有一個(gè)簡(jiǎn)單方法可以解決。
解決方法:
首先在 UIView 的 category 里加一個(gè)方法:
UIView+Utils.m
- (UIView*)subViewOfClassName:(NSString*)className {
for (UIView* subView in self.subviews) {
if ([NSStringFromClass(subView.class) isEqualToString:className]) {
return subView;
}
UIView* resultFound = [subView subViewOfClassName:className];
if (resultFound) {
return resultFound;
}
}
return nil;
}
用的時(shí)候:
UIView* backgroundView = [searchBar subViewOfClassName:@"_UISearchBarSearchFieldBackgroundView"];
backgroundView.layer.cornerRadius = 14.0f;
backgroundView.clipsToBounds = YES;
就可以改成圓形了。效果:

圓形的 UISearchBar
用這個(gè)方法還可以改取消按鈕的顏色、字體什么的。