0

dynamic 내 셀 프레임에 preferredLayoutAttributesFitting을 사용합니다. 하지만 나를 혼란스럽게하는 것은 처음에는 preferredLayoutAttributesFitting 메서드가 호출되지 않습니다. 내 uicollectionView를 다시 불러 와서 호출해야합니다.(iOS) preferredLayoutAttributesFitting 메소드가 호출되지 않았습니다.

내 코드 :

override func viewDidLoad() { 
    super.viewDidLoad() 

self.recommendDatas.removeAll()

let para = RecommendGoodsReqModel() 
    para.user_id = XLD_USER_ID() 

    Swift_API.REQUEST_MallRecommendData(parameter: para) { (resModel) in 

     for dataModel in resModel.datas!{ 

      self.recommendDatas.append(dataModel) 

     } 

     self.collectionView.mj_header.endRefreshing() 
     self.collectionView.reloadData()<-first time reloadData 

    } 

} 

과 collectionView 나에게 아무것도주지 않았다. . 전체 페이지가 비어 있습니다 (I는 호출하지, preferredLayoutAttributesFitting에 중단 점을) 나는 방법이 - 다시로드 풀다운 :

override func headerRefrshAction(){ 

    Swift_API.REQUEST_MallRecommendData(parameter: para) { (resModel) in 

    for dataModel in resModel.datas!{ 

     self.recommendDatas.append(dataModel) 

    } 

    self.collectionView.mj_header.endRefreshing() 
    self.collectionView.reloadData()<-second time to reloadData 

} 

완전히 동일한 코드를. 그러나 이번에는 preferredLayoutAttributesFitting이 호출되었고 페이지가 정상적으로 표시됩니다. 그래서 나는 왜 preferredLayoutAttributesFitting 메소드가 처음 콜되지 않았는지 모르겠다. 나는 collectionView를 다시로드했다.

어느 누구도 알고 계십니까?

답변

0

내 컬렉션보기의 첫 번째로드/레이아웃에서 preferredLayoutAttributesFitting이 호출되었지만 (내 셀은 자동으로 크기가 자동 조정되었습니다) 후속 다시로드/레이아웃에서 호출되지 않았습니다. 그들의 예상 크기).

나에 대한 수정 컬렉션보기

 self.collectionView.collectionViewLayout.invalidateLayout() 
     self.collectionView.reloadData() 
를 다시로드하기 전에 레이아웃을 무효로했다