2014-08-28 2 views
10

xcode 6에서 크기 클래스를 사용할 때 내 셀의 하위 뷰에 잘못된 너비가 나타납니다. 나는 크기를위한 autolayout을 가진 UIImageView을 가지고있다. 상수는 10, 아래는 L/R이다. 크기 클래스를 사용할 때 UITableViewCell 하위 뷰가 잘못된 너비를보고합니다.

하면 tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!)에서 다음 호출 할 때 :

println("w: \(cell.mapSnapshotImageView.bounds.size.width) h: \(cell.mapSnapshotImageView.bounds.size.height)") 

난 항상 얻을 :

w: 580.0 h: 80.0 

을 비록 그것이 해야w: 300.0 h: 80.0 아이폰 5S에 내 320x100 크기의 셀을 기준.

모든 것이 올바르게 표시되지만 다른 하위보기의 일부 계산에는 하위보기의 너비를 사용하고 싶습니다. 왜 이런 일이 일어나고 있는지에 대한 아이디어가 있습니까? 버그 신고 또는 설계대로 작동합니까?

편집 :

이 문제는 처음에로드 세포에 적용됩니다. 세포가 재사용 될 때, 그 문제는 그 자체로 나타나지 않습니다. 재사용 셀에 println 출력 :

w: 300.0 h: 80.0 
+0

'willDisplayCell : atIndexPath :'를 체크인하면 동일한 불일치가 발생합니까? – Mundi

+0

같은 결과,'w : 580.0 h : 80.0' –

+0

재미 있군 ...'println ("w : \ (cell.contentView.frame.size.width)")','println ("w : (cell.contentView.subviews [0] .frame.size.width) ")'. 그 결과는 아주 놀랍습니다. –

답변

2

이 문제도 발생했습니다. 하위 뷰는 뷰의 크기를 동적으로 변경하면 그에 따라 값을 업데이트해야합니다. 값을 업데이트하기 전에 참조하고 있습니다.

내 작업은 업데이트 된 값을 참조하는 것이 었습니다. 이 경우에는 viewDidAppear()에있었습니다. 희망이 몇 가지 사용을 제공합니다. 나는 그걸 알아 내려고 애썼다.

+0

지연을 유감스럽게 생각합니다. –

+1

이것이 올바른 셀 크기를 지속적으로 얻을 수있는 유일한 방법입니다. NavigationController 푸시에서 애니메이션의 슬라이드가 성가신 때까지 실행되지 않습니다. –

+0

"Accept"Late이 루프를 닫으려고합니다. 그것은 이상한 작업 흐름 일뿐입니다. –

12

프레임에 액세스하기 전에 cell.layoutIfNeeded()willDisplayCell:forRowAtIndexPath으로 호출하십시오. 그것은 트릭을 할 것입니다.

+0

오오 ... 전에는 열쇠입니다 – Konstantin

+0

이 사람에게 쿠키를주세요 – Laszlo

+0

내 삶을 살렸다 !!! – Dhruv

0

[cell layoutIfNeeded]를 호출 한 후 layoutSubviews() 메서드를 사용하여 하위 뷰의 '올바른 값'을 얻을 수 있습니다.

관련 문제