-10

Я использовал AutoLayout с одним из своих UICollectionView Я столкнулся с проблемой с высотой и шириной для imageView. Я добавил UIImageView в свой UICollectionViewCell, как показано ниже с ограничениями.Ограничения для ImageView не работают

enter image description here

UICollectionViewDataSource методы.

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return 100 
} 

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 

    var width = Int((collectionView.frame.size.width - 30)/4) 
    if width % 2 != 0 { 
     width += 1 
    }   
    return CGSize(width: CGFloat(width), height: CGFloat(width)) 
} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! CustomCell 
    print("Cell Size - \(cell.bounds)") 
    print("ImageView Size - \(cell.imageView.frame)") 
    return cell 
} 

Но когда я бегу этого ImageView всегда приходит с 70X70 независимо от того, на каком устройстве я побегу, но UICollectionViewCell размер увеличивается и уменьшается на разных устройствах.

На iPhone 6 это будет выглядеть ниже.

enter image description here

Я поставил backgroundColor из UIImageView до белого цвета и красного цвета для UICollectionViewCell, так что это даст понять тесто журнала консоли для Cell и ImageView Размер, как показано ниже.

Cell Size - (0.0, 0.0, 86.0, 86.0) 
ImageView Size - (5.0, 5.0, 70.0, 70.0) 
Cell Size - (0.0, 0.0, 86.0, 86.0) 
ImageView Size - (5.0, 5.0, 70.0, 70.0) 

Пожалуйста, любой один помочь мне, почему размер ImageView не увеличивается или уменьшается в соответствии с UICollectionViewCell. Любая помощь будет оценена по достоинству.

+1

Почему х и у ... нет необходимости в этом, я думаю ??? –

+0

@ EICaptainv2.0 Я уже пробовал без этого, но это не сработает. –

+0

Я вижу, что этот размерный класс выбран в вашем раскадровке. Если вы выберете «Все», вы все еще можете увидеть ограничения? –

ответ

1

После небольшого исследования я придумал следующий способ решить эту проблему: AutoLayout с UICollectionViewCell. Из Xcode 6 CollectionViewCell не отображается contentView в построителе интерфейса, поэтому в ячейке awakeFromNib я установил его autoresizingMask, и он работает как шарм.

class CustomCell: UICollectionViewCell { 
    @IBOutlet var imageView: UIImageView! 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     //Below line solved my problem 
     self.contentView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 
    } 
} 
0

вам необходимо установить ограничения, как показано ниже снимок экрана; enter image description here

+0

Я уже добавил эти ограничения с 5 пробелами сверху, снизу, слева и справа, еще раз проверьте вопрос. –

+0

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

+0

Я уже пробовал это, прочитал вопрос и комментарий. –

-1

центр по горизонтали и по вертикали центр Ограничение не должно быть там, когда кеглей родитель всех сторон (сверху, снизу, ведущий & Продольных) были даны для зрения изображения.

Либо удалить Центр по горизонтали и по вертикали центр Ограничения Или сверху, снизу, ведущий & Продольный и дают одинаковую ширину и высоту, как родитель наряду с центром вертикально и горизонтально раст у.

Удаляет центр по горизонтали и по вертикали. Ограничения решат вашу проблему точно, попробуйте.

Надеюсь, что это поможет. Удачи.

+0

Я уже пробовал эту проверку второго комментария вопроса. –

+0

Я уже пробовал с равной шириной и равной высотой единственное решение, которое помогает мне, - это установить autoresizingMask для contentView коллекцииViewCell. –

+0

Охх, в любом случае, получил решение наконец-то, что важно! –

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

  • Нет связанных вопросов^_^