0

すべての向きで画面の上部に留まることを意図した iPad アプリ用の UIToolbar があります。ただし、私の UIToolbar が含まれている UIView は回転しません。UIToolbar は回転しますが、回転を希望どおりに機能させるのに問題があります...

ツールバーのコンテンツを引き伸ばす (スケール変換を設定する) か、変換を台無しにする (フレームまたは境界を設定する) ことなく、ツールバーのサイズを変更する方法がわかりません。

- (void)updateOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated
{   
    CGAffineTransform toolbarTransform;
    switch(orientation) {
        case UIDeviceOrientationPortrait:
            toolbarTransform = CGAffineTransformIdentity;
            break;

        case UIDeviceOrientationLandscapeRight:
        toolbarTransform = CGAffineTransformMakeTranslation(-768 / 2 + 44 / 2, 768 / 2 - 44 / 2 + 1024 - 768);
        toolbarTransform = CGAffineTransformRotate(toolbarTransform, degreesToRadian(-90));

        break;

        case UIDeviceOrientationLandscapeLeft:
        toolbarTransform = CGAffineTransformMakeTranslation(768 / 2 - 44 / 2, 768 / 2 - 44 / 2);
        toolbarTransform = CGAffineTransformRotate(toolbarTransform, degreesToRadian(90));

        break;

        case UIDeviceOrientationPortraitUpsideDown:
            toolbarTransform = CGAffineTransformMakeTranslation(0, 1024 - 44);
            toolbarTransform = CGAffineTransformRotate(toolbarTransform, degreesToRadian(180));
            break;


        default:
            toolbarTransform = CGAffineTransformIdentity;
            break;
    }

    if(animated)
    {
        [UIView animateWithDuration:.5 animations:^
        {
            self.toolbar.transform = toolbarTransform;
        }];
    }
    else
    {
        self.toolbar.transform = toolbarTransform;
    }
}

このコードはほとんどの場合、ツールバーを希望どおりに配置しますが、変換を台無しにしたり、ツールバーのコンテンツを引き延ばしたりせずにツールバーのサイズを変更するにはどうすればよいでしょうか? それとも、私はこれを完全に間違ってアプローチしていますか?

編集: コードを少し更新しました。ポジショニングは正しいです。何らかの方法でサイズを変更する必要があります...

4

1 に答える 1

1

この問題の解決策は、特別な UIView (rotationView と呼ばれる) を作成し、UIToolbar に直接ではなく、その UIView に対してすべての回転/変換を実行することでした。次に、toolbar.frame変換を「台無しにする」ことなく安全に変更できます。

于 2012-10-17T16:42:52.253 に答える