Ios UITabBarView使图像成为圆形

Ios UITabBarView使图像成为圆形,ios,swift,tabs,uitabbarcontroller,swift2.2,Ios,Swift,Tabs,Uitabbarcontroller,Swift2.2,我写的应用程序与图像,这应该是阿凡达。所以我希望这个化身完全是圆形的。我使用自动布局,我知道如何使外观图像完美的圆圈,即使有限制,而不使用延迟!但现在我使用的是Tab Bar View(带Tab BarView控制器),当我试图用avatar打开Tab时,我面临的问题是:图片不是完整的圆圈。它不是菱形,但仍然不是圆形。但若我尝试其他酒吧,然后和阿凡达一起回到酒吧,那个将是一个完美的循环。查看下面的gif动画,您将看到所有内容: 下面是执行此操作的代码: @IBOutlet weak var u

我写的应用程序与图像,这应该是阿凡达。所以我希望这个化身完全是圆形的。我使用自动布局,我知道如何使外观图像完美的圆圈,即使有限制,而不使用延迟!但现在我使用的是Tab Bar View(带Tab BarView控制器),当我试图用avatar打开Tab时,我面临的问题是:图片不是完整的圆圈。它不是菱形,但仍然不是圆形。但若我尝试其他酒吧,然后和阿凡达一起回到酒吧,那个将是一个完美的循环。查看下面的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
}

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

我也遇到了同样的问题,我发现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 )

谢谢你的回答,听起来很有趣,但我想要一些不同的东西。我希望在加载约束后立即调用该方法。我想我找到了一个,但它不快。。。这个方法是:override func viewdide(动画:Bool){userAvatarImageView.layer.cornerRadius=userAvatarImageView.bounds.size.width/2.0}是的,我也遇到了这个问题,但我没有找到任何解决方案,所以我像这样使用:)。希望这会对您有所帮助好的,谢谢,我稍后会尝试您的方法,但现在ViewDidDisplay可能已经足够了。我想我已经找到了一个解决方案,但速度非常慢:override func ViewDidDisplay(动画:Bool){userAvatarImageView.layer.cornerRadius=userAvatarImageView.bounds.size.width/2.0}有人知道更好的方法吗?