2016-02-15 3 views
1

У меня есть UIView, который содержит UILabel. Размер UIView адаптируется к размеру UILabel.Угловой радиус для просмотра после установки текста

Я хочу UIView быть круг, поэтому я установить радиус угла:

view.clipToBounds = true 
label.text = "123" 
view.layer.cornerRadius = view.frame.size.height/2 

Однако, если я позвоню код, указанный выше, радиус закругления угла не приспособлен иногда. Кажется, что рамка UIView еще не изменила свой размер. UIView находится внутри UITableViewCell.

+0

«не адаптировано ** иногда **»? – tktsubota

+0

Да, иногда ... довольно странно ... это выполняется на основном потоке. – Manuel

+0

Я действительно заметил, что меняется не только радиус угла, но и размер представления, содержащего метку. – Manuel

ответ

1

Если вы не против подклассов вы можете сделать следующее:

import UIKit 

class RoundedView: UIView { 

    override func layoutSubviews() { 
     super.layoutSubviews() 
     layer.cornerRadius = frame.height/2.0 
    } 

} 

Это будет регулировать радиус угла на соответствующей высоте в любое изменение размера вида.

+0

Это сработало, но тогда размер округленного вида оставался разным. Я узнал, что проблема была в действительности NSLayoutConstraints в раскадровке. Округленный вид имел ограничение на расположение с правой стороны и «больше или равно» другому UILabel с левой стороны. Ограничение препятствовало изменению размера округленного представления в соответствии с его надписью. Удаление левого ограничения решило проблему. – Manuel

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