0

向きが変わったときに手動で回転させる UIView が 1 つあります。この UIView は多数のボタンをホストしています。向きの変化に基づいてボタンも回転させたいと考えています。

私はこれをやっています:

  CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI / -4);

    [UIView animateWithDuration:0.25 animations:^
    {

        self.parentView.firstButton.transform =   CGAffineTransformConcat(self.parentView.firstButton.transform, rotation);
        self.parentView.secondButton.transform = CGAffineTransformConcat(self.parentView.secondButton.transform, rotation);
        self.parentView.thirdButton.transform = CGAffineTransformConcat(self.parentView.thirdButton.transform, rotation);
        self.parentView.transform = CGAffineTransformConcat(self.parentView.transform, rotation);
    }
        completion:^(BOOL finished)
    {
    }];

parentView は正しく回転しますが、他のボタンは回転しません!! 別の呼び出しでローテーションを実行する必要がありますか? ボタンとその親ビューを同じブロックで回転させることはできませんか?

ありがとう

4

1 に答える 1

0

parentView を回転させるだけで十分です。最初に必ず割り当ててくださいself.parentView.transform。で適切な変換を直接割り当ててみてください。CGAffineTransformMakeRotation()変換プロパティの現在の状態に依存しないでください (を使用するなどCGAffineTransformConcat())。サブビューが実際にparentViewのサブビューであることを確認することを忘れないでください-[self.parentView addSubview:...]どこかで発生するはずです。IB を使用してサブビューを設定する場合、これは注意が必要です。IBのビュー階層ツリーをチェック!

于 2013-02-10T10:32:58.673 に答える