图像不形成圆形

时间:2018-06-08 12:37:24

标签: ios swift

我制作了一个自定义类,它将使方形图像成为圆形。在我的XIB中,我让imageView向本课程确认。用来获得循环的图像。

但是,当我在viewWillAppear中进行api调用以从服务器获取图像并将服务器中的网址分配给imageview时,我得到了类似于图像的五边形,而不是圆圈形状...

enter image description here

在呈现视图时是否将自定义类(使imageview为圆形)分配给imageview,之后调用api并获取图像的url或任何此类原因。但仍然为什么imaegview获得这样的形状我无法弄清楚..

3 个答案:

答案 0 :(得分:3)

使用

imageView.layer.maskToBounds = true
imageView.layer.cornerRadius = imageView.frame.width/2.0
imageView.clipsToBounds = true

imageview的宽度和高度必须相同。

在viewwillappear中,如果您有固定的宽度和高度,则不会修复边界,因此只有角半径可以工作。根据您的屏幕截图,您可能看起来没有相同的高度。请查看一次。

@bwv从视图中使用服务调用的好习惯确实出现了

答案 1 :(得分:0)

首先要记住的是......

要制作imgView square,它必须是正方形

其次,imgView.clipsToBounds = true剪切其边界,没有它你将看不到圆形图像视图。

所以最终,你需要关注......

imgView.layer.cornerRadius = imgView.frame.height/2.0 //you can use height too as with are same.
imgView.clipsToBounds = true

答案 2 :(得分:-1)

Rob的回答How to add a border to a circular image with mask创建了下面的课程。然后给你UIImageView那个班级。

@IBDesignable
class photo: UIImageView {


private weak var borderLayer: CAShapeLayer?

override func layoutSubviews() {
    super.layoutSubviews()

    // create path

    let width = min(bounds.width, bounds.height)
    let path = UIBezierPath(arcCenter: CGPoint(x: bounds.midX, y: bounds.midY), radius: width / 2, startAngle: 0, endAngle: .pi * 2, clockwise: true)

    // update mask and save for future reference

    let mask = CAShapeLayer()
    mask.path = path.cgPath
    layer.mask = mask

    // create border layer

    let frameLayer = CAShapeLayer()
    frameLayer.path = path.cgPath
    frameLayer.lineWidth = 10.0
    frameLayer.strokeColor = UIColor.white.cgColor
    frameLayer.fillColor = nil

    // if we had previous border remove it, add new one, and save reference to new one

    borderLayer?.removeFromSuperlayer()
    layer.addSublayer(frameLayer)
    borderLayer = frameLayer
}
}