Answers:
UIView
兄弟姐妹按照添加到其父视图的顺序堆叠。该UIView
层次的方法和属性是有管理的视角次序。在UIView.h中:
@property(nonatomic,readonly) UIView *superview;
@property(nonatomic,readonly,copy) NSArray *subviews;
- (void)removeFromSuperview;
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;
- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2;
- (void)addSubview:(UIView *)view;
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview;
- (void)bringSubviewToFront:(UIView *)view;
- (void)sendSubviewToBack:(UIView *)view;
兄弟视图在subviews
阵列中排列为从前到后。因此,最上面的视图将是:
[parentView.subviews lastObject];
底视图将是:
[parentView.subviews objectAtIndex:0];
就像科林·克雷温克尔(Kolin Krewinkel)所说的那样,[parentView bringSubviewToFront:view]
将视图带到顶部,但是只有当视图都是层次结构中的所有同级对象时,情况才如此。
您可以使用zPosition
视图图层(它是一个CALayer
对象)的属性来更改视图的z索引。
theView.layer.zPosition = 1;
正如Viktor Nordling所说,“大价值放在首位。您可以使用任何想要的值,包括负值。” 默认值为0。
您需要导入QuartzCore框架才能访问该层。只需将此代码行添加到实现文件的顶部。
#import "QuartzCore/QuartzCore.h"
zPosition
作品,视图的超级视图必须相同吗?
IB和斯威夫特
给定流动的布局,其中黄色是父视图,红色,绿色和蓝色是黄色的兄弟子视图,
目的是将子视图(假设为绿色)移到顶部。
在Interface Builder中,您所需要做的就是将要显示在文档大纲中列表顶部的视图拖到底部。
或者,您可以选择视图,然后在菜单中转到“ 编辑器”>“排列”>“发送到前端”。
有两种不同的方式以编程方式执行此操作。
方法一
yellowView.bringSubviewToFront(greenView)
该方法与上述IB答案在程序上等效。
仅当子视图彼此为同级时才有效。
子视图的数组包含在中yellowView.subviews
。在这里,bringSubviewToFront
将greenView
index从0
移到2
。可以观察到
print(yellowView.subviews.indexOf(greenView))
方法二
greenView.layer.zPosition = 1
0
所有其他视图的结果,因此结果是greenView
看起来像在顶部。然而,它仍然在指数0
的yellowView.subviews
数组的。但是,这可能会导致一些意外的结果,因为诸如敲击事件之类的事件仍将首先进入具有最高索引号的视图。因此,最好使用上述方法1。zPosition
可以设置为CGFloat.greatestFiniteMagnitude
(CGFloat(FLT_MAX)
在旧版本的雨燕),以确保其在上面。如果您使用的是cocos2d,则可能会看到[parentView BringSubviewToFront:view]有问题,至少对我来说不起作用。我没有将我想要的视图放在最前面,而是将其他视图发送回去,从而达到了目的。
[[[CCDirector sharedDirector] view] sendSubviewToBack:((UIButton *) button)];
我们可以在ios中使用zPosition
如果我们有一个名为salonDetailView的视图,
例如:@IBOutlet weak var salonDetailView: UIView!
并具有用于GMSMapView的 UIView,
例如:@IBOutlet weak var mapViewUI: GMSMapView!
要显示视图salonDetailView的上部mapViewUI
使用zPosition如下
salonDetailView.layer.zPosition = 1