1

선택한 정답 (태그를 사용하는 것만)이 나를 위해 작동하지 않았거나 (다른 답변도 없음) Changing label position in UICollectionViewCell이지만 내 문제는이 문제와 매우 유사합니다.cellForItemAtIndexPath의 UICollectionViewCell에서 UIView 프레임 변경

사용자 지정 UICollectionViewCell이있는 UICollectionView가 있습니다. 셀에는 IBOutlet 속성을 통해 참조되는 UIView가 있습니다. 단순히 cellForItemAtIndexPath 메서드 내에서 프레임을 변경하려고하고 UIView 의 프레임이 실제로 변경된 경우 인 반면, 실제로 무시되거나 무시되지 않습니다.

그러나 UICollectionView가 약간 스크롤되고 셀 재사용이 시작되면 다시 사용 된 셀 이 UIView 프레임의 이전 변경 사항을 준수하므로 UIView가 정상적으로 표시됩니다. 따라서 어떤 이유로 특정 셀에 대해 처음으로 cellForItemAtIndexPath이 호출되면 프레임 변경은 무시되지만 셀이 다시 사용되면 나중에 적용됩니다.

는 사실, 난 그냥 눈치 호기심 무언가가 다시 셀이 크기 이전에 변경했던 프레임의을 가지고,하지만 될 일이 원래 기원, 유지 (0, 0), 비록 그것을 (0, 50)과 같은 것으로 업데이트하려고 시도하고 있습니다.

UIView의 다른 속성을 변경하면 배경색을 변경하는 것과 같이 문제가 없습니다. UIView의 프레임이 처음 변경되는 것을 막기 위해 어떤 일이 벌어 질 수 있습니까?

+0

프레임을 어떻게 변경하고 있습니까? 자동 레이아웃을 사용하고 있습니까? – rdelmar

+0

의견을 보내 주셔서 감사합니다 (아래 및 아래). 나는'setFrame'을 사용하여 프레임을 변경하려고하는데 자동 레이아웃을 사용하고 있습니다. 아래에서 자동 레이아웃을 사용할 때 프레임이 아닌 제약 조건을 직접 업데이트하는 것이 더 낫다고 언급 했습니까? 'cellForItemAtIndexPath'에서 만들어진 프레임 변경이 후속 자동 레이아웃 액션에 의해 오버라이드되고 있다고 생각하십니까 (그렇다면 셀 재사용에 대해 어떤 이유로 든 괜찮습니까)? – narbodon

+0

잘 모르겠습니다 만 자동 레이아웃을 사용하는 경우 프레임을 설정해서는 안됩니다. 이 기능을 끄면 문제가 해결되는지 확인할 수 있지만 자동 레이아웃을 고수하고 코드를 변경하여 이러한 제약 조건을 조정합니다. – rdelmar

답변

-1

UICollectionViewCell은 스토리 보드 또는 xib 파일에 정의 된보기의 프레임을 업데이트하지 않습니다.

사용자 정의 셀 initWithFrame 및/또는 awakeFromXib 파일에서 프로그래밍 방식으로보기를 만들어야합니다.

건배!

hmmmm

내가 잘못 생각할 수도 있습니다. UITableViewCell에 대해 이것이 사실임을 알고 있습니다. Cannot update UI object's frame in UITableViewCell

+0

그건 재미 있어요. UIImageView는 앞서 언급 한 UIView의 하위 뷰로서 * cellForItemAtIndexPath'에서 예상대로 프레임을 완벽하게 업데이트합니다. 따라서 일부보기의 프레임이 잘 업데이트되지만 다른보기는 업데이트되지 않는 것이 이상하지 않습니까? 또한, 왜 세포가 재사용되면 결국은 결국 작동합니까? – narbodon

+0

이 답변은 잘못되었습니다. 다른보기와 마찬가지로 스토리 보드에서 만든 컬렉션보기 셀 내부의보기를 업데이트 할 수 있습니다. – rdelmar

+0

@rdelmar 참조하십시오 http://stackoverflow.com/questions/12872987/cannot-update-ui-objects-frame-in-uitableviewcell –

관련 문제