CALayer的contentsCenter无法快速运行

时间:2018-11-20 04:56:38

标签: ios swift image calayer

我想增加图像按钮的触摸区域,并且在搜索时,发现了一种使用CALayer contentsCenter 属性的方法。

https://developer.apple.com/documentation/quartzcore/calayer/1410740-contentscenter

上面的文档示例显示了一个图像,该图像居中于图层内部,可以随着图层大小的变化而调整大小,同时保持contentsCenter属性中定义的比率。

但是当我使用contentsCenter属性时,它只会拉伸图像的中心-(0.5, 0.5)

所以我将contentsGravity属性添加到.center,但是导致contentsCenter属性无法正常工作。

    button.frame = CGRect(x: 0, y: 0, width: 300, height: 300)
    button.center = view.center
    button.backgroundColor = .clear

    let image = UIImage(named: "profileImage")
    button.layer.contents = image?.cgImage
    button.layer.contentsCenter = CGRect(x: 0.25, y: 0.25, width: 0.5, height: 0.5)
    button.layer.contentsGravity = .center
    //button.layer.contentsScale = image?.scale

    button.layer.borderColor = UIColor.black.cgColor
    button.layer.borderWidth = 2
    button.layer.cornerRadius = 5
    button.layer.masksToBounds = true

如何使图像居中于具有嵌入比例的按钮内?

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码增加UIButton的大小

button.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)