2016-03-23 2 views
0

Я пишу приложение с изображением, которое должно быть аватаром. Поэтому я хочу, чтобы этот аватар был полностью круглым. Я использую AutoLayout, и я знаю, как сделать изображение идеального круга даже с ограничениями без использования задержки! Но теперь я использую Tab Bar View (с TabBarView Controller), и когда я пытаюсь открыть вкладку с аватаром, я столкнулся с проблемой: изображение не является полным кругом. Это не ромб, но это еще не круг. Но если я попробую другие бары, а затем вернусь в бар с аватаром, это будет идеальный круг. Посмотрите в GIF анимацию ниже, и вы увидите все:UITabBarView сделать изображение круга

enter image description here

Существует код, чтобы сделать это:

@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 
} 

Но ни один из этих методов не работает должным образом. Пожалуйста, может быть, кто-то знает, как это исправить?

+0

Я думаю, я нашел решение, но оно довольно медленно: переопределение функ viewDidAppear (анимированный: Bool) { userAvatarImageView.layer.cornerRadius = userAvatarImageView.bounds.size.width/2,0 } знает кого-нибудь лучший путь? – Alex

ответ

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) 
+0

Спасибо за ваш ответ, звучит интересно, но мне нужно что-то другое. Я хочу, чтобы метод вызывался сразу после загрузки ограничений. Я думаю, что нашел один, но это не быстро ... Этот метод: переопределить func viewDidAppear (анимированный: Bool) { userAvatarImageView.layer.cornerRadius = userAvatarImageView.bounds.size.width/2.0 } – Alex

+0

Да, я тоже столкнулся эта проблема, но я не нашел никакого решения, поэтому я использовал вот так :). Надеюсь, что это поможет вам –

+0

Хорошо, спасибо, я попробую ваш метод позже, но на данный момент viewDidAppear может быть достаточно. – Alex

Смежные вопросы