「iOS」UISearchBar 之私有类 UISearchBarBackground 已无法使用

1,346 阅读1分钟

之前我们在使用 UISearchBar 时会有修改其背景颜色的需求,使用如下方法:

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:frame];
searchBar.searchBarStyle = UISearchBarStyleProminent;

// --- start ---
UIView *view = searchBar.subviews[0];
view.backgroundColor = yourColor;
for (UIView *subview in view.subviews) {
    if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
        [subview removeFromSuperview];
        break;  
    }  
}
// --- end ---

[someView addSubview:searchBar];

此方法在 iOS13 系统下已不可使用,会导致程序崩溃且无错误信息。