我想把一个视图移到另一个视图的上方,我怎么知道视图的z索引,以及如何移到顶部?
当前回答
在你想要放到顶部的视图中… (迅速)
superview?.bringSubviewToFront(self)
其他回答
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;
兄弟视图在子视图数组中由后往前排序。所以最上面的视图是:
[parentView.subviews lastObject];
底部视图将是:
[parentView.subviews objectAtIndex:0];
就像Kolin Krewinkel说的,[parentView bringSubviewToFront:view]将把视图带到顶部,但只有当视图在层次结构中都是兄弟姐妹时才会出现这种情况。
[parentView bringSubviewToFront:view] ;
你可以使用视图层的zPosition属性(它是一个CALayer对象)来改变视图的z-index。
theView.layer.zPosition = 1;
正如维克多·诺德林(Viktor Nordling)补充的那样,“大价值是最重要的。你可以使用任何你想要的值,包括负值。”缺省值为0。
您需要导入QuartzCore框架来访问该层。只需在实现文件的顶部添加这行代码。
#import "QuartzCore/QuartzCore.h"
如果你想通过XCode的Interface Builder来实现,你可以使用Editor->Arrangement下的菜单选项。在那里你会发现“发送到前面”,“发送到后面”,等等。
我们可以在ios中使用zPosition
如果我们有一个名为salonDetailView的视图 例如:@IBOutlet弱var salonDetailView: UIView!
以我为例,请看图片
并有GMSMapView的UIView @IBOutlet weak var mapViewUI: GMSMapView!
在mapViewUI上显示View salonDetailView
使用zPosition如下所示
salonDetailView.layer.zPosition = 1
推荐文章
- iPhone上UIView和UILabels的渐变
- keychain上的分发证书中缺少私钥
- 在实现API时,我如何避免在块中捕获自我?
- 如何创建一个Swift Date对象?
- Xcode 4在目标设备上说“finished running <my app>”——什么都没有发生
- 从另一个应用程序打开设置应用程序
- 快速提取正则表达式匹配
- 如何应用梯度的背景视图的iOS Swift应用程序
- 图书馆吗?静态的?动态吗?或框架?另一个项目中的项目
- 如何用SwiftUI调整图像大小?
- Xcode 6 gitignore文件应该包括什么?
- 如何在iPhone/iOS上删除电话号码的蓝色样式?
- 检测视网膜显示
- 如何在UIImageView中动画图像的变化?
- 如何从iPhone访问SOAP服务