2017-02-09 2 views
0

Я создал пользовательскую коллекцию элементов просмотра. Он имеет UILabel, UIView, UIButton, а затем UITextView.Динамическая высота для пользовательской коллекции с помощью автозапуска

Требования:

  1. размер текста UILabel может быть что угодно. Исходя из этого, это метка размера контента должна быть re-size. Он работает правильно.
  2. любое количество просмотров может быть добавлено в UIView. Исходя из этого, этот UIView должен быть re-size.
  3. UIButton - это обычная кнопка. Когда мы нажмем на него, изменится ниже TextView.

Ограничения, которые я примененные являются:

enter image description here

+0

представление коллекции будет размер ячейки зависит от его содержания? – rishu1992

ответ

-1

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

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
    let Labell : UILabel = UILabel() 

    Labell.text = self.items[indexPath.item] 
    let labelTextHeight = Labell.intrinsicContentSize.height 
    //calculate size for UIView, UIButton, TextView and then add it 
    return CGSize(width: /*fix width*/, height: labelTextHeigh + /*your UIView height and other height*/) 

} 

не забудьте продлить viewController от UICollectionViewDelegateFlowLayout

+0

, пожалуйста, расскажите, как рассчитать размер @Rock Balbao размера –

+0

@Rock Balbao, где вы присвоили текст uilabel. –

+0

Я создаю временную метку, которая берет текст как label.text и вычисляет его высоту, таким образом, я получаю размер метки, которая будет использоваться в реальном времени. и я могу установить высоту представления коллекции и как высоту метки + некоторое пространство, которое вы хотите сохранить между ячейками. @RahulPatel –