2015-10-04 2 views
0

У меня есть UICollectionView в ViewController типа ANY-ANY раскадровки и с использованием автоматической компоновки с быстрым. Я изменил размер ViewController на размер экрана iPhone 5.Угловой радиус UIButton в UICollectionViewCell не работает

Проблема в том, что внутри UICollectionViewCell есть кнопка, и я пытаюсь сделать этот циркуляр. Когда я запускаю iPhone 5, кнопка становится круговой, но если я буду работать в iPhone 6 или 6+, она не будет в круге.

Ниже приведен код, я использую в "cellForItemAtIndexPath"

var btnImage = cell.contentView.viewWithTag(100) as UIButton 
    btnImage.layer.masksToBounds = true 
    btnImage.layer.cornerRadius = btnImage.frame.size.height/2 

Результатом этого кода, как показано ниже enter image description here

И если я использую ниже код

var btnImage = cell.contentView.viewWithTag(100) as UIButton 
    btnImage.layoutIfNeeded() 
    btnImage.layer.masksToBounds = true 
    btnImage.layer.cornerRadius = btnImage.frame.size.height/2 

результат ниже

enter image description here

Есть ли у кого-нибудь идеи по этой проблеме. Спасибо заранее.

ответ

3

Решение, которое работало по этому вопросу ниже:

cell.contentView.frame = cell.bounds //This is important line 
var btnImage = cell.contentView.viewWithTag(100) as UIButton 
btnImage.layoutIfNeeded() //This is important line 
btnImage.layer.masksToBounds = true 
btnImage.layer.cornerRadius = btnImage.frame.size.height/2 

Приведенный выше код делает кнопку полной круговой.

0

Неверный рабочий стол, не работающий с ячейкой коллекции. Я только что создал демо-приложение для тестирования, и он работает. Ниже приведен код из моей демонстрации.

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    var cell:CollectionCell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! CollectionCell 

    // Configure the cell 
    cell.roundTestButton.layer.cornerRadius = 10.0 
    cell.roundTestButton.layer.masksToBounds = true 

    println(cell.roundTestButton) 

    return cell 
} 

или here is git link полного проекта.

+0

Я хотел сделать кнопку полной круговой. Я загрузил ваш код из git и заменил строку «cell.roundTestButton.layer.cornerRadius = cell.roundTestButton.frame.size.height/2 » и работал на iPhone 6+, и это был не полный круг, а стал овальная форма. –

+0

@TeenanathPaul Я не работал над тем, чтобы сделать его круговым. Я просто убедился, что круглый прямоугольник отлично работает на UICollectionViewCell. – rptwsthi

+0

Спасибо @rptwsthi, я получил решение, и кнопка теперь полностью круглая. –

1

Это связано с ограничением автоопределения. Поскольку высота и ширина могут увеличиваться после установки размера радиуса угла. Постарайтесь установить это в раскадровке.

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