当添加为UIImageView的子视图时,视图会被翻转

时间:2014-04-09 13:37:41

标签: ios uiview uiimageview uiview-hierarchy

我正在通过UIViewdrawRect上绘制一个三角形,然后将此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];

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

如果我将图形直接添加到主视图的子视图中,则不会发生这种情况。

1 个答案:

答案 0 :(得分:0)

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

使用断点,当您看到此行为时,请检查imageView.image.imageOrientation的值。它是否等于UIImageOrientationUp以外的任何其他内容?如果是这样,你可能需要处理UIImageView是"翻译"一些属性进入UIImage"人类首选"坐标系,而不是图像数据的实际坐标系。

我没有亲自测试过此代码或方法,因为我没有向UIImageView添加子视图,但这可能是一个问题。如果这有助于诊断它,请告诉我们 - 我非常好奇!