0

私が持っているのは

 UIView
     1.Image1
     2.Image2
     3.UILabel

下の画像のように

ここに画像の説明を入力

次に、UILabel に回転を適用します。

- (void)viewDidLoad    
    {
        testLabel.transform     =   CGAffineTransformMakeRotation(M_PI*0.25);
        [super viewDidLoad];
    }

そして、私がアプリケーションを実行しているとき、結局のところuilabeは消えています。参考までに2枚目の画像を見てください

ここに画像の説明を入力

ここで私が間違っていることを指摘してください....そして仕事を成し遂げる方法

ありがとう

4

4 に答える 4

2

Autolayout は多くの問題を引き起こすため、注意してください。

「自動レイアウトを使用」の選択を解除してみてください

オブジェクトを翻訳しようとするすべての問題を解決してくれます。

于 2012-12-12T17:25:28.617 に答える
1

PI に対して小さい値を掛けてみて、回転しているか、単に消えているかを確認します。私の記憶が正しければ、回転は中心ではなく左上隅に基づいているため、後で翻訳する必要があります。

たとえば、ビデオ クリップを回転するには、次の手順を実行する必要がありました。

CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI);
CGAffineTransform translateToCenter = CGAffineTransformMakeTranslation(640, 480);
CGAffineTransform mixedTransform = CGAffineTransformConcat(rotation, translateToCenter);
[firstTrackInstruction setTransform:mixedTransform atTime:kCMTimeZero];

最初に PI (180 度) だけ回転しましたが、回転の中心が左上隅にあるため、ビデオ クリップは反対側の象限にあり、元に戻す必要がありました。これは、あなたのレーベルで起こっていることかもしれません。

ラベルが42x21の寸法であると仮定して、これを試してください..

CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI);
CGAffineTransform translateToCenter = CGAffineTransformMakeTranslation(42, 21);
CGAffineTransform mixedTransform = CGAffineTransformConcat(rotation, translateToCenter);
label.transform = mixedTransform;
于 2012-07-11T19:17:17.667 に答える
0

AutoLayout と AutoResizing は、ビューの境界や中心ではなくフレームを変更するように見えるため、変換を適用するときに問題を引き起こすことがよくあります。したがって、自動調整はレイアウトに大混乱をもたらします。変換されたラベルを、必要に応じてそのスーパービュー内でそのビューの寸法とレイアウトを変更しないビューでラップしてみてください。

于 2014-07-15T14:13:56.863 に答える
0

[super viewDidLoad] を最初に配置してみてください:

- (void)viewDidLoad    
{
[super viewDidLoad];        
testLabel.transform     =   CGAffineTransformMakeRotation(M_PI*0.25);
}
于 2012-07-11T19:00:53.983 に答える