0

我正在为 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
    }

我得到了这样的结果 在此处输入图像描述

4

1 回答 1

0

帽插入不是从中心计算的。它们是从侧面计算的。帽插图定义了您不希望图像被拉伸的每一侧的大小。就您而言,我认为您只是想要:

UIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1)
于 2014-07-26T15:36:49.023 回答