1

この行を使用して水平な 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];
}

垂直方向の中央に保持し、水平方向に引き延ばすために、マスクのサイズを変更することを考えていますか?

4

0 に答える 0