0

私は非常に奇妙な問題を抱えています。viewDidAppearUIViewのスーパービューを次のように手動で回転および移動しようとしています。

- (void)viewWillAppear:(BOOL)animated
{
    // ...

    [self.view.superview setTransform:CGAffineTransformMakeRotation(M_PI/2)];
    [self.view.superview setCenter:CGPointMake(100, 200)]; // (100, 200) is toy value

    // ...
}

何らかの理由で、回転は正しく適用されますが、スーパービューの中心(つまり位置)はまったく移動しません。また、回転と平行移動の組み合わせ(または平行移動のみ)に変換を設定してみましたCGAffineTransformが、スーパービューも移動しません。

違いが生じる場合self.view.superviewは、が一番上のビューです(つまりself.view.superview.superview、ですnil)。

ここで非常に単純なものが欠けていますか?

編集:nielsbotのコメントは、viewDidLoadに配置することが機能したという点で正しいものでしたが、その時点で、ビューはすでに表示されているため、新しい場所にスナップする場所にちらつきがあります。これを回避する方法はありますか?

4

1 に答える 1

0

ビューの境界を次のように設定してみてください。

[self.view.superview setBounds:CGRectMake(x,y,self.view.superview.width,self.view.superview.height)];

これにより、ビューが彼に与えた x、y 位置に移動するはずですが、もちろんこれは中心ではありません

中心は、たとえば回転に使用される特別なポイントを表します

于 2012-08-23T07:27:32.480 に答える