2014-10-31 3 views
3

내 tableview에 새로운 자동 크기를 사용하려고합니다. 필자는이 일을 :Swift에서 회전 장치를 회전 할 때 iOS8 tableviewcell 높이가 변경됩니다.

tableView.rowHeight = UITableViewAutomaticDimension 

나는 훌륭한 노력하고 몇 가지 제약 조건 내있는 UITableViewCell에 여러-UILabel의이; 가로 및 세로 모두에서 tableview를 입력하면 행의 높이가 동적입니다! 굉장해!

...하지만 기기를 회전하면 행의 기본 높이 (예 : 44)가됩니다.

나는이 행 추가 :

override func willAnimateRotationToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) 
{ 
    self.tableView.reloadData() 
} 

을 그리고 문제는 사라진다. 그러나 이것이 정말로 필요한가? 이 문제를 해결하는 더 좋은 방법이 있어야합니까?


편집 :

난 그냥 같은 문제는이 같은 테이블보기에서 행을 삭제있을 때 발생하는 것을 발견 :

tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 

내가 여기서 뭔가를 놓치고 있습니까? 왜이게 상자 밖에서 작동하지 않니? 다시


편집 :

는 지금과 같이 일을했습니다 내 데이터 API에서 가져온 것입니다

다음
self.tableView.estimatedRowHeight = 44 
tableView.rowHeight = UITableViewAutomaticDimension 

가 :

self.tableView.reloadData() 
self.tableView.beginUpdates() 
self.tableView.endUpdates() 

이 모두 커버하는 것 내가 지금까지 테스트 해 보았던 사례들, 그러나 그것은 정말로 해킹 된 것처럼 보입니다! 시작/끝 업데이트가 없으면 셀이 첫 번째로드에서 정말 펑키 한 높이를 표시합니다. (그러나 장치를 회전 할 때 셀 높이가 정확하게 조정됩니다.)

이 모든 것이 너무 버그가있는 것처럼 보입니다. 이 케이스들을 정확하게 커버하는 하나의 안내서를 찾지 못했습니다.

+0

이 기사는 매우 유용하고 확실하지는 않지만 확실한 문제입니다. 하지만 iOS8에서는 willAnimateRotationToInterfaceOrientation을 사용하거나 데이터를 다시로드 할 필요가 없습니다. http://captechconsulting.com/blog/tyler-tillage/ios-8-tutorial-series-auto-sizing-table-cells – dirkgroten

+0

안녕하세요. 질문 당신이 uitableviewcell에 자동 레이아웃 제약 조건을 사용했는지 말해 주시겠습니까? uilabel의 내용에 따라 높이가 필요하거나 항상 44가되어야합니다. 더 직면하게 될 문제의 이미지를 추가하십시오. 당신의 문제를 확인하십시오. –

답변

0

올해 WWDC 세션에 따르면 셀이 이미 Autolayout을 사용하고 있다면 이 자동으로으로되어 있다고 가정합니다. 당신이 자동 레이아웃을 사용하지 않은 경우가 systemLayoutSizeFittingSize:(CGSize) 전화를 시도하여이 작업을 수행 할 것, 또는, 당신이뿐만 아니라 iOS7에 지원 tableView.rowHeighttableView.estimatedRowHeight을 설정하면 발생할 것입니다하는 경우의 확인 일에 sizeThatFits:(CGSize)

를 호출 할 것이다 이상한 행동을 보일 수 있습니다. 앱을 실행중인 iOS의 버전에 따라 둘 중 하나만 조건부로 호출 할 수 있지만 두 가지를 모두 호출하는 것은 아닙니다.

특히 라벨에 문제가있는 경우 스토리 보드에있는 경우 새로운 UMAX 라벨의 '자동 우선 최대 레이아웃 너비'속성을 사용하고 있는지 확인할 수 있습니다. "Attributes"inspector) 그리고 lines은 '0'으로 설정됩니다. 자세한 내용은 the documentation을 참조하십시오. UILabel의 특정 동작을 혼합하고 이상한 결과를 얻는 것에 대한 몇 가지주의 사항은 iOS 인터페이스 카탈로그의 "Behavior of Labels"를 참조하십시오.

마지막으로, 당신은 새로 rotation methods for size classes 추가에 무슨 일이 일어나고 있는지 볼 수 있습니다 : -willTransitionToSize:withTransitionCoordinator: -willTransitionToTraitCollection:withTransitionCoordinator:

3

내가 전체 검색 창 및있는 tableView 아주 회전부터 다운 난민 된 회전 유사한 문제가 있었다 풍경 및 뒤로 초상화. 비칩니다> 스위프트 검색 창은 회전시 searchController.active 후있는 tableView의 상단에서 분리 :

Swift searchBar separates from top of tableView after searchController.active during rotation

내가있는 viewDidLoad 기능 후 재정의 기능 즉 :

override func willAnimateRotationToInterfaceOrientation(toInterfaceOrientation:  UIInterfaceOrientation, duration: NSTimeInterval) 
{ 
    self.tableView.reloadData() 
} 

을 붙여 내 문제는 사라졌다. 이유를 모르겠다. Glenn Tisman

관련 문제