Відповіді:
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