Я работаю над настраиваемой клавиатурой для iOS 8. И у меня есть изображение для фона кнопок. Например, возьмем вот это ->
В будущем это изображение будет иметь закругленные углы. Проблема с кнопкой пробела, если я добавляю это изображение для фонового изображения, размер изображения будет изменен, а закругленные углы не будут такими, как я хотел (потому что кнопка пробела слишком длинная). Поэтому я решил добавить капинсеты. В этом случае изображение имеет размер 64x64, а значения capinsets - 2 пикселя сверху, 2 пикселя слева, 2 пикселя снизу и справа. Поскольку в Xcode capinsets вычисляется из центра, я пишу такой код (в данном случае borderSize == 0):
private func imageWithCapinsetsForImage(initalImage: UIImage) -> UIImage {
let halfOfImageWidth = currentImage.size.width / 2
let halfOfImageHeight = currentImage.size.height / 2
let capinsetsCalculatedFromImageCenter = UIEdgeInsets(top: halfOfImageHeight - capinsets.top - borderSize, left: halfOfImageWidth - capinsets.left - borderSize, bottom: halfOfImageHeight - capinsets.bottom - borderSize, right: halfOfImageWidth - capinsets.right - borderSize)
let imageWithCapinsets = initalImage.resizableImageWithCapInsets(capinsetsCalculatedFromImageCenter)
return imageWithCapinsets
}
Это код на языке Swift, в Objective-C та же проблема. Когда я добавляю такие capinsets на фоне космической кнопки (самая длинная кнопка), центральная линия между серым и черным цветом больше не находится в центре (чем длиннее кнопка - тем ниже эта линия). Кто знает почему? И как я могу это исправить? И экран: Если я работаю с таким кодом:
private func imageWithCapinsetsForImage(initalImage: UIImage) -> UIImage {
let capinsetsCalculatedFromImageCenter = UIEdgeInsets(top: capinsets.top + borderSize, left: capinsets.left + borderSize, bottom: capinsets.bottom + borderSize, right: capinsets.right + borderSize)
let imageWithCapinsets = initalImage.resizableImageWithCapInsets(capinsetsCalculatedFromImageCenter)
return imageWithCapinsets
}
я получаю такой результат