2015-11-16 4 views
3

В моем классе UICollectionViewCell я писал:Как я могу обойти UIImageView в UICollectionViewCell?

- (void)layoutSubviews { 
    [super layoutSubviews]; 
    self.myImageView.layer.cornerRadius = CGRectGetHeight(self.myImageView.frame)/2; 
    self.myImageView.layer.masksToBounds = YES; 
} 

Но это не правильно работать во всех случаях, по-видимому, как это:

enter image description here

+0

Работы для меня в порядке. Не вижу ничего плохого в вашем коде. Попробуйте получить доступ к ширине напрямую, вместо использования геттера для высоты. 'self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width/2;' http: //www.appcoda.com/ios-programming-circular-image-calayer/ – NSNoob

+0

Также вы устанавливаете радиус угла в 'viewDidLayOutSubviews'. Он называется несколько раз для каждого добавляемого поднабора. Не помещайте его – NSNoob

+2

Для круга ваша высота и ширина должны быть равны. И cornerRadius должен быть половины высоты или ширины. Добавьте себя. myImageView.clipsToBounds = YES; –

ответ

6

Я сталкивался с подобной проблемой trying to get a collectionView inside a TableView Cell.

Если вы меняете модель своей ячейки, вы должны сказать ячейке, чтобы пересчитать ее расположение, чтобы ячейка меняла свой размер и звонила layoutIfNeeded.

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView 
       cellForItemAtIndexPath:(NSIndexPath *)indexPath 
     UICollectionViewCell*cell = ... 
     // Do your stuff here to configure the cell 
     // Tell the cell to redraw its contentView   
     [cell layoutIfNeeded]; 
    } 
+0

Отлично! меня устраивает! Спасибо – Pagly