Search code examples
iosuiviewpositionz-index

How to set iPhone UIView z index?


I want to move one view on top of another, how can I know the z index of the view, and how to move on to top?


Solution

  • UIView siblings are stacked in the order in which they are added to their superview. The UIView hierarchy methods and properties are there to manage view order. In 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;
    

    The sibling views are ordered back to front in the subviews array. So the topmost view will be:

    [parentView.subviews lastObject];
    

    and bottom view will be:

    [parentView.subviews objectAtIndex:0];
    

    Like Kolin Krewinkel said, [parentView bringSubviewToFront:view] will bring the view to the top, but this is only the case if the views are all siblings in the hierarchy.