1

我在UIView通孔上绘制了一个三角形drawRect,然后将其添加UIView为主视图 ( UIView) 的子视图。

很容易,它显示了。

当我使用UIImageView.

UIView(主视图)添加UIImageView为子视图,并以此UIImageView添加UIView我在其上绘制三角形的子视图。

等级制度:

[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];

三角形垂直翻转。简单的解决方法是UIView再次垂直翻转,但我想知道为什么添加UIViewas 子视图UIImageView会导致这种翻转。

如果我将绘图所在的视图直接添加为主视图的子视图,则不会发生这种情况。

4

1 回答 1

0

UIImage 的方向有时可能会渗入 UIImageView 的坐标系。UIImageView 经过高度优化,可以将 UIImage 绘制到屏幕上。UIImageView 甚至不调用drawRect,例如

使用断点,当您看到此行为时,请检查imageView.image.imageOrientation. 它是否等于除 之外的任何东西UIImageOrientationUp?如果是这样,您可能需要处理 UIImageView 正在将某些属性“转换”到 UIImage 的“人类首选”坐标系而不是图像数据的实际坐标系的事实。

我没有亲自测试过这个代码或方法,因为我没有向 UIImageView 添加子视图,但这可能是一个问题。请让我们知道这是否有助于诊断它——我很好奇!

于 2014-04-09T14:50:35.047 回答