UITableViewCell
에 UIImageView
이 포함 된 디자인이 있습니다. 이 이미지는 세로 또는 가로 비율이 같아야합니다.이 때문에 UIDeviceOrientationDidChangeNotification
알림을 사용하여 인터페이스 방향이 변경 될 때 호출되는 메서드가 있습니다.UITableView setRowHeight 변경 내용 커밋 방법
-(void)updateRowHeightForOrientation:(UIInterfaceOrientation)orientation {
if(!IS_KNOWN_ORIENTATION(orientation))
return;
CGFloat rowHeightPortrait = (IPAD ? 320. : 160.);
CGFloat widthPortrait = (IPAD ? 768. : 320.);
CGFloat orientationWidth = (IS_PORTRAIT(orientation) ?
(IPAD ? 768. : 320.) :
(IPAD ? 1024. : 480.));
CGFloat resultingRowHeight = rowHeightPortrait * orientationWidth/widthPortrait;
[self.tableView setRowHeight:resultingRowHeight];
// [self.tableView reloadData]; /* works if uncommented */
}
줄이 주석 처리되지 않은 경우보기가 다시 그려지고 행 높이가 올바르게 설정됩니다. 그렇지 않은 경우 [self.tableView setNeedsDisplay]
또는 [self.tableView setNeedsLayout]
을 사용하는 경우에도 속성의 새 값이 사용되지 않습니다.
새 값이 적용되도록 강제로 UI를 다시로드하려면 어떻게해야합니까?
그것은 당신의 도움은 ... rowHeight
속성이 인터페이스 회전하기 전에 설정되고 다시 그려하지만, 어떤 이상한 이유로이 방법은 더 이상 호출되지 않기 때문에 -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
를 사용하여 몇 시간 동안
감사했다!
이것은 완벽합니다. 불행하게도, 나는 셀, 텍스트가 가운데에 있으면 전체 너비를 사용하도록 동적으로 크기를 조절하는 UILabel을 가지고 있습니다. 화면을 회전 시키면 레이블의 오른쪽이 이동 한 것처럼 보입니다. 그러면 텍스트가 가운데에 표시됩니다. 정말보기에는 아름답 지 않습니다. 만약에 그들이 더 나은 행동을 취하는 어떤 방법이라면 나는 그것을 어떻게 알고 싶다. 그렇지 않다면 그렇게 중요하지 않다. – dvkch