iOS: frame.size.width/2 doesn't produce a circle on every device

后端 未结 6 1422
长发绾君心
长发绾君心 2020-11-29 06:09

I\'m aware that the formulae frame.size.width/2 should produce a circle border, however in XCode I am currently experiencing some discrepancies.

I have

6条回答
  •  一向
    一向 (楼主)
    2020-11-29 06:57

    Thanks to @leo Dabus for the original solution Following is just an update for swift 4.2

    import UIKit
    extension UIImage {
        var circleMask: UIImage {
            let square = size.width < size.height ? CGSize(width: size.width, height: size.width) : CGSize(width: size.height, height: size.height)
            let imageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: square))
            imageView.contentMode = UIView.ContentMode.scaleAspectFill
            imageView.image = self
            imageView.layer.cornerRadius = square.width/2
            imageView.layer.borderColor = UIColor.white.cgColor
            imageView.layer.borderWidth = 5
            imageView.layer.masksToBounds = true
            UIGraphicsBeginImageContext(imageView.bounds.size)
            imageView.layer.render(in: UIGraphicsGetCurrentContext()!)
            let result = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            return result!
        }
    }
    

提交回复
热议问题