2011-12-17 3 views
0

나는 UITableViewCell의 몇 가지 서브 클래스로 간단하게 UITableViewController을 가지고 있습니다. 각 셀에 imageView 및 textLabel을 사용하고 있습니다.UITableViewCell의 textLabel 프레임이 장치 순환을 위해 변경되지 않도록하십시오.

세로/가로로 장치를 회전 시키면 텍스트 라벨의 프레임이 변경됩니다. 세로 방향에서 가로 방향으로 회전 할 때 변경 사항이 적절합니다. 그러나 풍경에서 세로로 다시 회전하면 프레임이 "잘못된"값 (텍스트가 부적절하게 정렬 됨)으로 변경됩니다.

어떻게 해결할 수 있습니까?

imageViews '프레임이 변경되는 것과 비슷한 문제가있었습니다. UITableViewCell을 서브 클래스 화하고 프레임을 올바른 값인 layoutSubviews에 설정하여이를 해결했습니다. 여기에는 기억해야 할 단 하나의 CGRect 값이 있습니다 (그리고 나는 단지 하드 코드합니다).

textLabel이 다릅니다. 두 개의 프레임 (각 방향마다 하나씩)을 추적해야하며 프레임 값이 textLabel의 텍스트에 의존한다고 생각합니다. 그래서 CGRect 인스턴스 변수를 내 UITableViewCell 하위 클래스에 추가하는 것이 좋습니다. 그러나 나는 더 간단한 해결책이 있다고 상상한다.

답변

0

cell.textLabel.numberOfLines = 0;cellForRowAtIndexPath에 있습니다. numberOfLines을 3으로 설정하면 문제가 해결됩니다. 또한 self.textLabel.frame.origin.x을 layoutSubviews의 하드 코드 된 값으로 설정해야했습니다.

여기서 일어나는 일을 완전히 이해했는지 확실하지 않습니다.