控件的層級(jí)關(guān)系和你加入到父視圖的順序有關(guān),也就是先addsubview至父視圖的,層級(jí)越低,會(huì)被后加入的遮蓋。
可以通過以下函數(shù)改變子視圖的層級(jí):
1.Objective-C版本:
將UIView顯示在最前面:
- (void)bringSubviewToFront:(UIView *)view;
將UIView顯示在下面:
- (void)sendSubviewToBack:(UIView *)view;
2.Swift版本:
將UIView顯示在最前面:
open func bringSubview(toFront view: UIView)
將UIView顯示在下面:
open func sendSubview(toBack view: UIView)
下面我們來舉個(gè)實(shí)例:
1.Objective-C的情況:
UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(100, 150, 100, 100)];
view1.backgroundColor = [UIColor redColor];
[self.view addSubview:view1];
UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(150, 200, 100, 100)];
view2.backgroundColor = [UIColor greenColor];
[self.view addSubview:view2];
// 以上顯示:紅色視圖(view1)先添加,在下面,綠色視圖(view2)后添加,在上面
如圖:這里寫圖片描述
修改成如下代碼:
UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(100, 150, 100, 100)];
view1.backgroundColor = [UIColor redColor];
[self.view addSubview:view1];
UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(150, 200, 100, 100)];
view2.backgroundColor = [UIColor greenColor];
[self.view addSubview:view2];
// 以上顯示:紅色視圖(view1)先添加,在下面,綠色視圖(view2)后添加,在上面
// 添加如下修改層級(jí)的代碼
// 將view2放在最下方
[self.view sendSubviewToBack:view2];
// 將view1放在最上方
[self.view bringSubviewToFront:view1];
這里寫圖片描述
2.Swift的情況
let view1 = UIView(frame: CGRect(x: 100, y: 150, width: 100, height: 100))
view1.backgroundColor = UIColor.red
self.view.addSubview(view1)
let view2 = UIView(frame: CGRect(x: 150, y: 200, width: 100, height: 100))
view2.backgroundColor = UIColor.green;
self.view.addSubview(view2)
// 以上顯示:紅色視圖(view1)先添加,在下面,綠色視圖(view2)后添加,在上面
// 添加如下修改層級(jí)的代碼
// 將view2放在最下方
self.view.sendSubview(toBack: view2)
// 將view1放在最上方
self.view.bringSubview(toFront: view1)
它的效果這里不再說,效果和Objective-C的一樣,讀者也可以自己試一下。