如何找到图像视图的半径?

How to find radius of image view?

我目前有一个包含圆形图像的图像视图。

我是这样设置的:

profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
profileImageView.clipsToBounds = true

我正在尝试使用 UIBezierPath 围绕圆绘制弧线,我想将图像视图的半径传递给半径参数。

let circlePath = UIBezierPath(arcCenter: CGPoint(x: profileImageView.frame.size.width/2, y: profileImageView.frame.size.height/2), radius: IMG_VIEW_RADIUS, startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true)

我该怎么做?

Swift 3.0

另一种方式

我刚刚添加了一个像这样的 imageView

let imageView = UIImageView(frame: CGRect(x: 100, y: 100, width: 200, height: 200))
imageView.backgroundColor = UIColor.green
imageView.layer.cornerRadius = imageView.frame.size.width / 2
imageView.clipsToBounds = true
self.view.addSubview(imageView)

做圆形贝塞尔路径

let circlePath = UIBezierPath(arcCenter: CGPoint(x: imageView.frame.size.width/2,y: imageView.frame.size.height/2), radius: CGFloat((imageView.frame.size.width/2) - 3.5), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true)

let shapeLayer = CAShapeLayer()
shapeLayer.path = circlePath.cgPath

//fill color
shapeLayer.fillColor = UIColor.clear.cgColor

//stroke color
shapeLayer.strokeColor = UIColor.white.cgColor

//line width
shapeLayer.lineWidth = 2.0

//finally adding the shapeLayer to imageView's layer
imageView.layer.addSublayer(shapeLayer)

现在使用相同的概念创建外边框

let outerCirclePath = UIBezierPath(arcCenter: CGPoint(x: imageView.frame.size.width/2,y: imageView.frame.size.height/2), radius: CGFloat(imageView.frame.size.width/2 ), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true)
let outerLayer = CAShapeLayer()
outerLayer.path = outerCirclePath.cgPath

//fill color
outerLayer.fillColor = UIColor.clear.cgColor
//stroke color
outerLayer.strokeColor = UIColor.blue.cgColor
//line width
outerLayer.lineWidth = 15.0
imageView.layer.addSublayer(outerLayer)

现在更改为内层创建的形状图层 zPosition,因为它的半径小于外层,应将其添加到顶部以便可见

shapeLayer.zPosition = 2

您需要稍微调整一下第一个内层的半径。在我的例子中,我只是用 3.5

减去半径

只使用边框宽度和边框颜色

    profileImageView?.layer.cornerRadius = 5.0
        profileImageView?.layer.borderColor = UIColor.white.cgColor