1

UIViewビアに三角形を描画しdrawRect、続いてこれUIViewをメイン ビューのサブビューとして追加します ( UIView)。

非常に簡単で、それは示しています。

を使用すると問題が発生しますUIImageView

UIView(メインビュー)サブビューとして追加し、UIImageViewこれを使用して、三角形を描画するサブビューとして追加します。UIImageViewUIView

階層:

[UIView] (main view; i.e. self.view)
      |
    [UIImageView] 
            |
         [UIView] (onto which drawing is)

作品を見る:

self.view = [[UIView alloc] initWithFrame:(CGRect){{0.0, 0.0}, 320.0, 480.0}];
imageView = [[UIImageView alloc] initWithImage:...];

[self.view addSubview:imageView];

viewWithTriangle = [[MyView alloc] initWithFrame:imageView.bounds];
[imageView addSubview:viewWithTriangle];

三角形が垂直に反転されます。簡単な修正は、垂直方向に再度反転することですが、 as サブビューを追加するとこの反転が発生するUIView理由を知りたいです。UIViewUIImageView

図面がメイン ビューのサブビューとして直接あるビューを追加すると、これは発生しません。

4

1 に答える 1

0

UIImage の向きは、UIImageView の座標系に影響を与えることがあります。UIImageView は、UIImage を画面に描画するために高度に最適化されています。drawRectUIImageView は、たとえば、呼び出しさえしません

ブレークポイントを使用して、この動作が見られたら、 の値を確認してくださいimageView.image.imageOrientation。以外のものと等しいUIImageOrientationUpですか?その場合、UIImageView が一部のプロパティを、画像データの実際の座標系ではなく、UIImage の「人間が好む」座標系に「変換」しているという事実を処理する必要がある可能性があります。

UIImageView にサブビューを追加していないため、このコードまたはアプローチを個人的にテストしていませんが、問題になる可能性があります。これが診断に役立つかどうかお知らせください。非常に興味があります。

于 2014-04-09T14:50:35.047 に答える