3

画像が歪むことなく UIImageView で画像を回転させる方法を見つけるために、インターネット全体を検索しました。私がテストした例はどれもうまくいきませんでした。したがって、ここに特定の質問を投稿する必要があります。

ローテーションの私のコードを以下に示します。結果は、リンク先の画像に表示されます (担当者が 5 歳未満の場合、投稿に画像を添付できませんでした)。角度の値を入力すると、画像は回転後に画像がどのようになるかを示しています。

回転は、0、90、180、および 270 度で正常に機能します。それ以外はすべてイメージをゆがめます。

self rotateImage:_compassScale duration:1 curve:UIViewAnimationCurveEaseIn degrees:(CGFloat)bearing];

.

- (void)rotateImage:(UIImageView *)image duration:(NSTimeInterval)duration curve:(int)curve degrees:(CGFloat)degrees
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:duration];
    [UIView setAnimationCurve:curve];
    [UIView setAnimationBeginsFromCurrentState:YES];

    CGAffineTransform transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(-degrees));
    image.transform = transform;


    [UIView commitAnimations];
}

90 度 120 度と斜め

URL を Im1、Im4、Im5 に変更すると、さらに 3 つの画像があります。担当者は、2 つ以上のリンクを投稿することを許可しませんでした。

多くの作業を行った結果、制約が歪曲に関係していることがわかりました。NESWリング(コンパスローズ?)は、コンパスフレームである別の画像の中心にある画像です。これらの画像とともに、画像の中央にテキスト フィールドがあります。

NESW リングを画面上の別の場所にドラッグしても、画像はゆがみません。しかし、代わりに画面上を動き回ります。

3 つのアイテムすべてを移動し、画面上の元の座標にドラッグして戻しました。スキューはなくなりました。しかし、テキストフィールドで角度を変更すると、両方の画像の位置が少し変わり、リングの位置の変更がフレームの位置シャンデに接続されているようには見えません。奇妙なのは、コンパス フレームを動かすコードがないことです。

これに対抗する方法はありますか?

4

1 に答える 1

1

自動レイアウトをオフにします。xib またはストーリーボードを選択し、File Inspector (右側のペインの最初) に「use autolayout」チェックボックスがあります。チェックを外します (デフォルトでオンになっています)。

その後、期待どおりの結果が得られるはずです。

autolayout を使用する理由がない限り、常に autolayout をオフにしておく必要があります。

于 2013-02-16T14:34:32.097 に答える