2016-12-16 2 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 프로토콜의 메소드를 호출 할 collectionView을 추가 한 사용자 정의 클래스와 UICollectionViewDelegateFlowLayout을 구현하기 위해 필요, 충분하지 않습니다 delegatecollectionViewdatasource 설정, UICollectionViewDelegateFlowLayout 프로토콜의 방법이다. 그래서 예를 아래와 같이 UICollectionViewDelegateFlowLayout을 구현 :

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {

0

이 방법은 항상 작동합니다. 먼저이 메소드가 실행되지 않는지 확인하십시오. 그렇지 않은 경우, 쓰기 위임이 같은 UICollectionViewDelegateFlowLayout :

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

그리고 어느 스토리 보드 또는 코드 collectionView.delegate = selfcollectionView.datasource = self

1

확인 Pls는에 의해 UICollectionView의 위임 및 데이터 소스를 결합하는 것을 잊지 말아 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 
} 

희망이 도움이 될 것입니다 ...