0

我正在用图像编写应用程序,应该是头像。所以我希望这个头像是完全圆形的。我正在使用 AutoLayout,并且我知道如何在不使用延迟的情况下即使有约束也可以使图像看起来完美的圆圈!但是现在我正在使用标签栏视图(带有 TabBarView 控制器),当我尝试使用头像打开标签时,我遇到了问题:图片不是完整的圆圈。它不是菱形,但仍然不是圆形。但如果我尝试其他酒吧,然后带着头像回到酒吧,那将是完美的循环。看看下面的 gif 动画,你会看到一切:

在此处输入图像描述

有代码可以做到这一点:

@IBOutlet weak var userAvatarImageView: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
}

override func viewWillAppear(animated: Bool) {
    userAvatarImageView.layer.borderWidth = 4.0
    userAvatarImageView.layer.masksToBounds = true
    userAvatarImageView.clipsToBounds = true
    userAvatarImageView.layer.cornerRadius = userAvatarImageView.bounds.size.width / 2.0
    let color = UIColor(red: CGFloat(255.0), green: CGFloat(255.0), blue: CGFloat(255.0), alpha: CGFloat(1.0))
    userAvatarImageView.layer.borderColor = color.CGColor
}

override func viewDidLayoutSubviews() {
    userAvatarImageView.layer.cornerRadius = userAvatarImageView.bounds.size.width / 2.0
}

override func viewWillLayoutSubviews() {
    userAvatarImageView.layer.cornerRadius = userAvatarImageView.bounds.size.width / 2.0
}

但是这些方法都不能正常工作。拜托,也许有人知道如何解决这个问题?

4

1 回答 1

0

我遇到了同样的问题,我发现 userAvatarImageView.bounds.size.width / 2.0 这个不起作用。所以我在那里给出了确切的值,然后图像显示完美的圆圈。

   userAvatarImageView.layer.cornerRadius = userAvatarImageView.bounds.size.width / 2.0 // Dont use like this 

   userAvatarImageView.layer.cornerRadius = 10.0 ( value which equal to userAvatarImageView.bounds.size.width / 2.0, calculate that value and put it here )
于 2016-03-23T08:01:58.837 回答