2016-12-16 1 views
0

Я попытался дать высоту и ширину для collectionViewCell, программно. Я использовал следующий метод:Как задать ширину и высоту программно для ячейки коллекции в ios, swift 3

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
     let viewWidth = self.deviceWidth/3 - 5 
     let viewHeight = viewWidth 

     return CGSize(width :100,height: 100) 
    } 

Это не сработало. даже этот метод не показывался как подсказка. Помогите мне с этим. Есть ли какой-либо другой метод делегата для установки ширины и высоты ячейки программно в Swift 3?

ответ

1

Метод collectionView(_:layout:sizeForItemAt:) является методом UICollectionViewDelegateFlowLayout протокола, поэтому установка delegate и datasource из collectionView не хватает, вам нужно реализовать UICollectionViewDelegateFlowLayout с пользовательским классом, где вы добавили collectionView для вызова методов UICollectionViewDelegateFlowLayout протокола. Так реализовать UICollectionViewDelegateFlowLayout, как показано ниже, например:

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {

0

Этот метод всегда работает. Сначала убедитесь, что этот метод выполнен без него. Если нет, то делегат записи UICollectionViewDelegateFlowLayout так:

class MyViewController: UIViewController , UICollectionViewDelegateFlowLayout, UICollectionViewDelegate, UICollectionViewDataSource{ 
    : 
    : 
} 

И не забудьте связать делегат и источник данных о UICollectionView либо из раскадровки или кода collectionView.delegate = self и collectionView.datasource = self

1

Pls, что ваш класс должен реализовать UICollectionViewDelegateFlowLayout как это:

class ViewController: UIViewController,UICollectionViewDataSource,UICollectionViewDelegate, UICollectionViewDelegateFlowLayout 
{ 
    ... 
} 

и затем записать этот метод делегата в классе:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
{ 
    return CGSize(width: 100, height: 100) // The size of one cell 
} 

Надеюсь, это поможет вам ...

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