适用于iPhone的UIView定位:任何“Z-Index”的概念?

时间:2011-06-14 15:34:14

标签: iphone objective-c interface-builder

我知道如果我想在UIImageView中添加黑色背景,我可以创建一个比它所包含的UIView稍小的UIImageView。如果我这样做,UIImageView就位于黑色背景的顶部。

假设我假设我想在UIImageView的TOP上设置黑色背景UIView(以便它覆盖图像),我该怎么做?是否存在z-index的概念?

这是我为图片添加黑色背景的代码:

UIView *blackBG = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)];

blackBG.backgroundColor = [UIColor blackColor];

UIImageView *myPicture = [[UIImageView alloc] initWithImage:
                          [UIImage imageNamed: @"myPicture.jpg"]];

int borderWidth = 10;

myPicture.frame = CGRectMake(borderWidth,
                             borderWidth,
                             blackBG.frame.size.width-borderWidth*2,
                             blackBG.frame.size.height-borderWidth*2)];

[blackBG addSubview: myPicture];

1 个答案:

答案 0 :(得分:28)

子视图是分层的,您可以使用...发送子视图到后面

[myView sendSubviewToBack:mySubView];

或带上SubviewToFront等。

你也可以做其中一个......

[myView insertSubview:mySubview atIndex:0]; //Places it at the bottom

[myView insertSubview:mySubview belowSubview:anotherSubview]; //Places it below anotherSubview

然而,只要将视图作为子视图添加到另一个视图,父视图就是堆栈的底部。您可以使用CALayer z订单,但是您绕过了视图和子视图的一般方法。

创建单个视图作为bg视图和imageview的父视图,然后您可以按照自己喜欢的方式对它们进行排序。

更新:我有一个UIView + Layout类别,它有很好的[subview sendToBack];[subview bringToFront];,您可能会发现它很有用.... article here