EDIT: кажется, что все-таки это решение должно работать, у меня были некоторые проблемы с кэшем
UIImage *selTab = [[UIImage imageNamed:@"tabHighlight"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
CGSize tabSize = CGSizeMake(CGRectGetWidth(self.view.frame)/5, 49);
UIGraphicsBeginImageContext(tabSize);
[selTab drawInRect:CGRectMake(0, 0, tabSize.width, tabSize.height)];
UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//
[self.tabBar setSelectionIndicatorImage:reSizeImage];
tabHiglight
является PNG из 82x49, я проверил с другие размеры, но это, по-видимому, подходит лучше всего. Я разделяю width
кадра на количество элементов, которые у меня есть в tabBar - в моем случае 5, затем я создаю новый UIImage из «правильного» размера и устанавливаю его как selectionIndicatorImage
.
Для поддержки 2x и 3x устройства я использовал: UIGraphicsBeginImageContextWithOptions (TabSize, НЕТ, [UIScreen В начало] .scale); – AlexD