это работает для меня в Objective-C. Похоже, что вы достаточно компетентны, чтобы перевести это на Swift:
[[UISearchBar appearance] setBackgroundImage:[UIImage new]
forBarPosition:UIBarPositionAny
barMetrics:UIBarMetricsDefault];
[[UISearchBar appearance] setBackgroundImage:[UIImage new]
forBarPosition:UIBarPositionAny
barMetrics:UIBarMetricsDefaultPrompt];
[self.searchBar setSearchFieldBackgroundImage:finalImage forState:UIControlStateNormal];
Где "finalImage" - это изображение, которое вы рисуете в коде, который возвращает UIImage того же размера прямоугольника, что и UISearchBar. Вы можете найти способы нарисовать изображение нужного цвета фона, а затем закруглить углы изображения. Вот и в Objective-C.
- (UIImage *)imageWithColor:(UIColor *)color withSize:(CGRect)imageRect {
UIGraphicsBeginImageContext(imageRect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, imageRect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
- (UIImage *)roundImage:(UIImage *)image withRadius:(CGFloat)radius {
CGRect rect = CGRectMake(0.0, 0.0, 0.0, 0.0);
rect.size = image.size;
UIGraphicsBeginImageContextWithOptions(image.size, NO, [UIScreen mainScreen].scale);
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect
cornerRadius:radius];
[path addClip];
[image drawInRect:rect];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
, поэтому полное объявление UISearchBar будет таким:
self.searchBar = [UISearchBar new];
CGRect rect = CGRectMake(0.0, 0.0, 44, 35);
UIImage *colorImage = [self imageWithColor:[UIColor whiteColor] withSize:rect];
UIImage *finalImage = [self roundImage:colorImage withRadius:10.0];
[self.searchBar setSearchFieldBackgroundImage:finalImage forState:UIControlStateNormal];
[self.searchBar setTranslatesAutoresizingMaskIntoConstraints:false];
[self.view addSubview:self.searchBar];
Это единственный найденный мной способ удалитьвся прикольная анимация добавлена Apple и настраивает фон по вашему желанию. Удачи (и для тех, кто понизит это, потому что это не в Swift, вы должны знать, что Swift - это Ruby 2.0 и язык мемов, пока настоящие программисты не сделают его языком мемов, поэтому придерживайтесь Objective-C).
Удачи
РЕДАКТИРОВАТЬ
убедитесь, что вы устанавливаете ограничения, если вы используете ограничения макета, если вы не используете ограничения, то удалите
[self.searchBar setTranslatesAutoresizingMaskIntoConstraints:false];
и затем установите рамку UISearchBar