PDF ページを CGContext に描画しています。
適切に描画するために、コンテキストにいくつかの変換を適用しています。
rect でレンダリングされた PDF ページは、ビューの rect よりも小さいです。
PDF がレンダリングされたビューの一部とまったく同じフレームを持つ 3 番目のビューを作成したいと考えています。
私の解決策は機能しますが、完全ではありません。時々 (多くの場合) rect が間違っています。
これは私がやっていることです:
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context {
CGContextSaveGState(context);
// apply transforms to context
// draw pdf page
CGRect calculatedFromRect = CGRectApplyAffineTransform(pageRect, CGContextGetCTM(context));
CGContextRestoreGState(context);
// now draw a green rect to test the frame on a not transformed context
GContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);
CGContextFillRect(context, calculatedFromRect);
self.thirdView.frame = calculatedFromRect;
}
thirdView は赤です。両方の四角形 (ビューと描画) が等しい場合、画面に茶色の四角形が表示されます (緑の四角形の上にアルファが付いた赤)。しかし、時々、2つが互いに分離しているのを見ることができます(オフセットとサイズの違い...これが発生すると、thirdView.frameはcalcularedRectよりも大きくなります)。
関連するすべてのビューのサイズと座標は同じであるため、 convertRect:fromView: で座標を変換しなくても問題ありません。しかし、私はこれを試しましたが、結果は同じでした。