この行を使用して水平な UITableView を作成しています:
self.tableView.transform = CGAffineTransformMakeRotation(-M_PI * 0.5);
cell.transform = CGAffineTransformMakeRotation(M_PI * 0.5);
私がやろうとしているのは、画面の中央に全画面幅で設定することです。初期化後はすべて問題ないように見えますが、デバイスを回転させると制御が失われます;/
初期化に使用するメソッドは次のとおりです。
- (void)viewDidLoad
{
[super viewDidLoad];
self.imageDownloadsInProgress = [NSMutableDictionary dictionary];
self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 200, self.view.bounds.size.width)];
self.tableView.autoresizingMask = UIViewAutoresizingNone;
self.tableView.transform = CGAffineTransformMakeRotation(-M_PI * 0.5);
self.tableView.center = self.view.center;
self.tableView.rowHeight = 200.0f;
}
すべてがうまくいかないローテーションハンドラー:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
[UIView beginAnimations:nil context:nil];
if(fromInterfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
fromInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
{
self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 200, self.view.bounds.size.width)];
self.tableView.center = self.view.center;
} else {
self.tableView.frame = CGRectMake(0, 0, self.view.bounds.size.width, 200);
self.tableView.center = self.view.center;
}
[UIView commitAnimations];
}
垂直方向の中央に保持し、水平方向に引き延ばすために、マスクのサイズを変更することを考えていますか?