0

私はビューAとビューコントローラBを持っています。ビューAが終了するとき(横向きのデバイス、BのビューAオーバーレイ)、Bを縦向きに変換したい(デバイスは横向きのままなので、Bは変換前に横向きにする必要がありますが、 B のフレームを修正したので、B が横向きに表示された場合、画面の一部が暗くなり、無責任になります)。しかし、画面の下部に無責任な黒い領域が表示されます。ビュー B は、この画面の小さなウィンドウに表示され、スクロールできます。私の変換コードは次のとおりです。

    CGFloat r = 1.5 * M_PI;
    CGAffineTransform t;
    t = CGAffineTransformMakeRotation( r );
    UIApplication *application = [ UIApplication sharedApplication ];
   self.view.frame = frame;
   self.view.center = CGPointMake(frame.origin.x + ceil(frame.size.width/2), frame.origin.y + ceil(frame.size.height/2));
self.view.bounds = [[ UIScreen mainScreen ] bounds ];
    t = CGAffineTransformTranslate(t, 130, 105);
    [self.view setTransform:t];

    [ application setStatusBarOrientation: UIDeviceOrientationPortrait animated: YES ];
4

1 に答える 1

0

あなたのコードは少し奇妙です。コード ソースからのコピー/貼り付けではないと思います。

あなたの問題については、さまざまな点があります。変換がそのビュー境界に適用される場合は、UIView のフレーム プロパティを使用しないでください。翻訳 ?

viewController が rootViewController である場合 (そのビューがウィンドウの直接のサブビューになるように)、次のようなものを試すことができます。

[self.view setTransform:CGAffineTransformIdentity];
[self.view setCenter:CGPointMake(160, 240)];
[self.view setBounds:CGRectMake(0, 0, 320, 460)];

あなたのviewControllerがあなたのrootViewControllerではない場合、実際に回転を設定する必要がありますが、中心はスーパービューの境界に依存します

于 2012-07-11T16:24:40.550 に答える