我想把一个视图移到另一个视图的上方,我怎么知道视图的z索引,以及如何移到顶部?
当前回答
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]将把视图带到顶部,但只有当视图在层次结构中都是兄弟姐妹时才会出现这种情况。
其他回答
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]将把视图带到顶部,但只有当视图在层次结构中都是兄弟姐妹时才会出现这种情况。
我们可以在ios中使用zPosition
如果我们有一个名为salonDetailView的视图 例如:@IBOutlet弱var salonDetailView: UIView!
以我为例,请看图片
并有GMSMapView的UIView @IBOutlet weak var mapViewUI: GMSMapView!
在mapViewUI上显示View salonDetailView
使用zPosition如下所示
salonDetailView.layer.zPosition = 1
[parentView bringSubviewToFront:view] ;
或者用这个
- (void)insertSubview:(UIView *)view belowSubview:(UIView*)siblingSubview;
根据这里
在你想要放到顶部的视图中… (迅速)
superview?.bringSubviewToFront(self)
推荐文章
- 是否有可能更新一个本地化的故事板的字符串?
- 以编程方式获取Bundle Identifier
- 为iPad和iPhone设计输入按钮
- 如何在我的iPhone应用程序中使用NSError ?
- 我的预发行应用已经在iTunes Connect中“处理”了一周多,这是怎么回事?
- Xcode iOS项目只显示“我的Mac 64位”,但不显示模拟器或设备
- Objective-C中的自动引用计数不能防止或减少什么样的泄漏?
- 在Xcode 9中如何从打开的多个模拟器中退出或关闭单个模拟器?
- 如何使用Swift播放声音?
- UINavigationBar自定义返回按钮没有标题
- 如何精确地以毫秒为单位记录方法的执行时间?
- 在整个UIWindow中获取UIView的位置
- 如何解散ViewController在Swift?
- 保存字符串到NSUserDefaults?
- 什么是NSLocalizedString等效在Swift?