私はその答えをずっと探し求めてきました。私はまだ iOS 開発のスピードに追いついている途中なので、ここで無知かもしれないことは間違いなく受け入れることができます。しかし、そこには完全かつ完全な答えがないため、実際に答えがあるかどうか疑問に思います.
これが取り引きです:私はCGLayerを使用して、かなり基本的なベクターポリゴンを生成しています:
- (CGLayerRef)getASegment
{
CGSize layerSize = s_viewRects[kASegment].size;
CGLayerRef theLayer = CGLayerCreateWithContext ( UIGraphicsGetCurrentContext(),
layerSize, nil );
CGContextRef context = CGLayerGetContext ( theLayer );
CGContextAddLines ( context, s_shapePoints, 7 );
return theLayer;
}
s_viewRects は、イメージ全体に配置されたコンテナーの四角形を保持する静的配列であり、s_shapePoints には、歪んだ六角形をマップする CGPoint 構造体の配列が含まれています。
さて、この形を再利用したいと思います。すべての用途に合わせて反転および回転する必要があります (記録として、これらは「LED」ディスプレイの「セグメント」です)。
形が整ってきました。問題ない。
問題は、再利用のために回転させることです。CGLayer を実際に回転させる方法はないようです。CALayer を回転する方法はたくさんありますが、CGLayer は回転しません。CALayer はすべてラスター グラフィックスに重点を置いているようであり、ベクター グラフィックスが必要であることを除けば、CALayer を喜んで使用します。
これに対処する明白な方法があるに違いないと確信しています。私がこれまで見てきた唯一の方法は、ターゲット グラフィックス コンテキスト全体を回転させ、形状を描画してから、コンテキストの回転を解除することです。家を回して電球を外すのと同じです。
私がそれを機能させる唯一の方法は、各セグメントを個別に描画する前にポイントを実際に変換することです。つまり、再利用はありません。形状の作成中に CGContextRotateCTM を実行しても、実際には要素が回転して表示されるわけではありません。
手がかりはありますか?