Благодарю. Ваш код работает нормально. Моя ошибка также была вашим последним фрагментом кода, потому что я установил activeItemBackground в начале моего кода.
я есть UITabBar с тремя вкладками. Теперь я хочу назначить или, скажем, заполнить всю ширину одной вкладки до соответствующего selectionIndicatorImage, потому что в настоящее время я получил границу, если выбрана вкладка. Как вкладка на левой стороне показывает на следующем скриншоте:
Я сделал подкласс UITabBar с новым свойством:
var activeItemBackground:UIColor = UIColor.white {
didSet {
let numberOfItems = CGFloat((items!.count))
let tabBarItemSize = CGSize(width: frame.width / numberOfItems,
height: frame.height)
selectionIndicatorImage = UIImage.imageWithColor(color: activeItemBackground,
size: tabBarItemSize).resizableImage(withCapInsets: .zero)
frame.size.width = frame.width + 4
frame.origin.x = -2
}
}
И UIImage-Extension для того, чтобы иметь backgroundColor и изображение:
extension UIImage
{
class func imageWithColor(color: UIColor, size: CGSize) -> UIImage
{
let rect: CGRect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
UIGraphicsBeginImageContextWithOptions(size, false, 0)
color.setFill()
UIRectFill(rect)
let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return image
}
}
Я много читаю об этой проблеме, но, к сожалению, не могу заставить ее работать. Что-то не хватает в моем коде?