質問

私のユーザーケースは、画像の縮尺、回転、平行移動のアニメーションを行うiphoneアプリケーションです。

だから、私はすべてを連結し、transformプロパティにフィードしますが、1つの問題があります:

画像のサイズはさまざまなので、画像を正しく配置するのは問題です。私は逆のy軸座標系に慣れているので、画像をy軸の60ピクセルに正確に配置したいです。

では、元のデカルトy軸から逆y軸の視点に変更するにはどうすればよいですか

役に立ちましたか?

解決

smaclが指摘しているように、これを行う最も簡単な方法は、ビューの原点でyの代わりに(screenheight-viewheight-y)を使用して、画面の左下に原点を移動することです。

ただし、CATransform3Dを使用して、メインビューのレイヤーの座標系を反転できます。これは、iPhoneアプリケーションとMacクライアント間で同じCore Animation CALayerレイアウトコードを共有できるようにするためです(iPhoneはCALayersの通常のQuartz座標系を反転させてUIViewsの座標系に一致させます)。これを有効にするために必要なことは、行を配置することです

self.layer.sublayerTransform = CATransform3DMakeScale(1.0f, -1.0f, 1.0f);

レイヤーホスティングUIViewの初期化コード。これによりCALayersが反転するため、これらのレイヤーでのUIKitテキストレンダリングも、次のようなコードを使用して反転する必要があります。

CGContextSaveGState(context);
CGContextTranslateCTM(context, 0.0f, self.frame.size.height);
CGContextScaleCTM(context, 1.0f, -1.0f);

UIFont *theFont = [UIFont fontWithName:@"Helvetica" size:fontSize];
[text drawAtPoint:CGPointZero withFont:theFont];

CGContextRestoreGState(context);

CGAffineTransformを使用して同様の種類の反転を行うことができますが、翻訳を適用して機能させる必要があります。

CGAffineTransform flipTransform = CGAffineTransformMakeTranslation(0.0f, self.frame.size.height);
flipTransform = CGAffineTransformScale(flipTransform, 1.0f, -1.0f);

アフィン変換を使用して、CGPointApplyAffineTransform()を使用して原点座標を変換できる場合があります。

他のヒント

y座標ごとに、y = top-y、topは描画する境界ボックスの上部のy座標です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top