【发布时间】:2014-07-26 11:44:05
【问题描述】:
我正在为 iOS 8 定制键盘。我有按键背景的图像。例如让我们拿这个 ->
将来此图像将具有圆角。如果要为背景图像添加此图像,则问题出在空格按钮上,并且将调整大小并且圆角不会像我想要的那样(因为空格按钮太长)。所以我决定添加capinset。在这种情况下,图片为 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
}
我得到了这样的结果
【问题讨论】:
-
图片是什么样的?发布您获得的结果的屏幕截图。
-
我不在我的 mac 电脑上,但我自己制作了它的样子。 Alos 我看到 capinsets 不是 1 像素,而是 2 像素,这东西会不会有问题?
-
发布原始图像、您使用图像的上下文以及您获得的实际结果的屏幕截图。
-
我已经添加了您想要的更改,但我无法发布上下文,因为代码太多,无法理解我在哪里以及如何调用这些函数。
标签: ios objective-c swift uiedgeinsets