如何设置UIButton图像,图像为带边框

时间:2017-08-24 13:18:26

标签: ios swift swift3 uibutton uiimage

如何设置UIButton图像,图像是带边框的圆形我写相关代码但图像没有以适当的圆形显示.. 这是我的代码..

    btnMyProfile.setImage(UIImage(named: "MyDefaultImg.png"), for: .normal)
    btnMyProfile.imageView?.contentMode = .scaleAspectFit
    btnMyProfile.imageView?.layer.cornerRadius = (btnMyProfile.imageView?.frame.width)! / 2
    btnMyProfile.imageView?.layer.borderColor = UIColor.blue.cgColor
    btnMyProfile.imageView?.layer.borderWidth = 2.0

我的o / p看起来像这样.. enter image description here

但我需要这样的.. enter image description here

如何实现我想要的输出?请帮帮我..先谢谢你。

7 个答案:

答案 0 :(得分:2)

为您的imageview设置clipsToBounds = true

btnMyProfile.imageView.clipsToBounds = true

或使用

btnMyProfile.imageView.layer.masksToBounds = true

来自apple docs

  

默认情况下,圆角半径不适用于中的图像   图层的内容属性;它仅适用于背景颜色和    图层的边框。但是,将masksToBounds属性设置为   true会导致内容被裁剪为圆角。

其他选项使用UIBezierPath

答案 1 :(得分:1)

如果你想要第二种类型的输出你应该减小图像的大小。(例如32x32或40x40)而不是做btnMyProfile.imageView?.layer.cornerRadius = (btnMyProfile.imageView?.frame.width)! / 2你应该做

 btnMyProfile.imageView?.layer.cornerRadius = image.size.width / 2 

你的其余代码似乎没问题。

答案 2 :(得分:0)

    func roundedImageView(imgView: UIImageView, borderWidth: Float, borderColor: UIColor)
{
    imgView.layer.cornerRadius = imgView.frame.size.width / 2
    imgView.clipsToBounds = true
    imgView.layer.borderWidth = CGFloat(borderWidth)
    imgView.layer.borderColor = borderColor.cgColor
}

答案 3 :(得分:0)

您可以设置图像的高度和宽度相同。

20X20,30X30 ..

答案 4 :(得分:0)

我在@Anbu&的帮助下实现了我想要的输出。也基于@ A.Jam的答案.. 这是我正确的代码..

/Products/1

答案 5 :(得分:0)

您应该将图像添加到按钮的背景中,并确保按钮的大小与20 * 20,30 * 30等成比例,并设置与您已设置的相同的角半径。

答案 6 :(得分:0)

这个答案为时已晚,但也许对某人有帮助

只需转到情节提要,选择“图像视图”,选择“属性检查器”,然后将“内容模式”从“纵横比调整”更改为“纵横比填充”