我知道公式frame.size.width/2应该产生一个圆形边框,但是在XCode中,我目前遇到了一些差异.
我有两个测试设备(iPhone6和第五代iPod touch)我也有模拟器运行.我的设备都显示正确,但模拟器将我的圆圈绘制为圆角矩形:

我用来实现这个(虽然非常简单)的代码是:
imgAvatar.layer.masksToBounds = true
imgAvatar.clipsToBounds = true
imgAvatar.layer.cornerRadius = imgAvatar.frame.size.width/2
imgAvatar.layer.borderWidth = 5
imgAvatar.layer.borderColor = UIColor.whiteColor().CGColor
Run Code Online (Sandbox Code Playgroud)
有什么理由发生这种情况吗?这让我疯了!
更新为了清除混淆,UIImageView在我的故事板中声明了190x190它,因为它还1:1应用了宽高比约束,以确保它保持比例宽度和高度.
更新2为了对我的自动布局约束产生任何疑虑,我附上了下面的图像,显示了为其设置的约束imgAvatar.如您所见,宽度和高度匹配,AR设置为确保它保持1:1的比例.我希望能够解决任何进一步的疑虑

答案莱昂纳多指出了一个非常实用且可重复使用的解决方案来解决这个问题,使用Swift扩展可以确保给定的UIImage总是方形的,因此总是生成一个圆圈,我已经在下面发布了Leonardo的解决方案:
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 = UIViewContentMode.ScaleAspectFill
imageView.image = self
imageView.layer.cornerRadius = square.width/2
imageView.layer.borderColor …Run Code Online (Sandbox Code Playgroud) 从下面的代码我只得到椭圆形图像我不知道为什么和我做错了什么..?
self.viewCirlce.layer.cornerRadius = self.viewCirlce.frame.size.width / 2
self.viewCirlce.clipsToBounds = true
Run Code Online (Sandbox Code Playgroud)