Відповіді:
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];
Як сказав Колін Кревінкель, [parentView bringSubviewToFront:view]виведе погляд на вершину, але це лише в тому випадку, якщо погляди є всіма побратимами в ієрархії.
Ви можете використовувати zPositionвластивість шару подання (це CALayerоб'єкт) для зміни z-індексу подання.
theView.layer.zPosition = 1;
Як додав Віктор Нордлінг , "великі значення стоять на вершині. Ви можете використовувати будь-які потрібні значення, включаючи негативні". Значення за замовчуванням - 0.
Вам потрібно імпортувати рамку QuartzCore для доступу до шару. Просто додайте цей рядок коду вгорі файлу реалізації.
#import "QuartzCore/QuartzCore.h"
zPositionтвори?
ІБ та Свіфт
Враховуючи текучий макет, де жовтий - це надзвичайний огляд, а червоний, зелений та синій кольори - це подвиди жовтого кольору,
мета - перемістити підзор (скажімо, зелений) до вершини.
У Builder інтерфейсу все, що вам потрібно зробити, - це перетягнути подання, яке ви хочете відобразити вгорі до нижньої частини списку в «Документи контуру».
Крім того, ви можете вибрати перегляд, а потім у меню перейти до Редактора> Впорядкувати> Надіслати на фронт .
Існує кілька різних способів зробити це програмно.
Спосіб 1
yellowView.bringSubviewToFront(greenView)
Цей метод є програмним еквівалентом відповіді на ІБ вище.
Він працює лише в тому випадку, якщо підзагляди є рідними братами один одного.
Масив підпереглядів міститься в yellowView.subviews. Тут bringSubviewToFrontпереходить greenViewз індексу 0до 2. Це можна спостерігати за допомогою
print(yellowView.subviews.indexOf(greenView))
Спосіб 2
greenView.layer.zPosition = 1
0всі інші представлення, то результат greenViewвиглядає так, як виглядає на вершині. Тим НЕ менше, він по- , як і раніше залишається на рівні індексу 0в yellowView.subviewsмасиві. Це, однак, може призвести до несподіваних результатів, оскільки такі речі, як події натискання, все одно перейдуть до перегляду з найвищим числом індексу. З цієї причини, можливо, буде краще скористатися вищевказаним методом.zPositionМоже бути встановлений CGFloat.greatestFiniteMagnitude( CGFloat(FLT_MAX)в старіших версіях Swift) , щоб переконатися , що він знаходиться на вершині.[parentView bringSubviewToFront:view] ;
У межах подання ви хочете піднятись до вершини ... (швидко)
superview?.bringSubviewToFront(self)
Якщо ви використовуєте cocos2d, можливо, ви побачите проблему з [parentView doneSubviewToFront: view], принаймні, це не працювало для мене. Замість того, щоб повернути думку, яку я хотів на фронт, я відсилаю інші погляди назад, і це зробило трюк.
[[[CCDirector sharedDirector] view] sendSubviewToBack:((UIButton *) button)];
Ми можемо використовувати zPosition в ios
якщо у нас є вид з назвою salonDetailView,
наприклад:@IBOutlet weak var salonDetailView: UIView!
У моєму випадку дивіться зображення
і мати UIView для GMSMapView,
наприклад:@IBOutlet weak var mapViewUI: GMSMapView!
Щоб показати салон ViewDetailView у верхній частині mapViewUI
використовувати zPosition, як показано нижче
salonDetailView.layer.zPosition = 1