您的位置:首页 > 产品设计 > UI/UE

UIView

2016-01-04 12:51 615 查看
  /*

图层关系

子视图 - 嵌套在父视图之上的视图

父视图 - 被嵌套的视图

视图和视图之间可以层层嵌套

*/

UIView *red = [[UIView alloc] initWithFrame:CGRectMake(50, 100, 100, 100)];

red.backgroundColor = [UIColor redColor];

//1.在父视图上嵌套一个子视图

[self.window addSubview:red];

//2.如何获取父视图(仅有一个)

UIView *window = [red superview];

//通过地址相同可知道,这是同一个window

NSLog(@"%p",self.window);

NSLog(@"%p",window);

// 3.获取子视图(可以有多个)[注意]返回值是一个数组

NSArray *subViews = [self.window subviews];

NSLog(@"%lu",[subViews count]);

//4.删除一个视图

//[red removeFromSuperview];

UIView *blue = [[UIView alloc]initWithFrame:CGRectMake(60, 110, 100, 100)];

blue.backgroundColor = [UIColor blueColor];

[self.window addSubview:blue];

//5.将一个视图放在父视图前面

//[self.window bringSubviewToFront:red];

//6.将一个视图放在父视图后面

//[self.window sendSubviewToBack:blue];

UIView *yellow = [[UIView alloc]initWithFrame:CGRectMake(70, 120, 100, 100)];

yellow.backgroundColor = [UIColor yellowColor];

//可以用以下4种方法将yellow视图添加到window中

//[self.window addSubview:yellow];

//7.在某个视图的后面插入一个视图

//[self.window insertSubview:yellow belowSubview:red];

//8.在某个视图的前面插入一个视图

//[self.window insertSubview:yellow aboveSubview:red];

//9.利用下标在指定位置插入

//坐标index是从内部算起

[self.window insertSubview:yellow atIndex:2];

//***************分割线*******************

//10.交换两个视图

//[self.window exchangeSubviewAtIndex:0 withSubviewAtIndex:2];

//检查某个视图是否为子孙视图或本身

BOOL is = [red isDescendantOfView:self.window];

NSLog(@"%d",is);

//黄色视图的左上角为原点

UIView *green = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 100, 100)];

green.backgroundColor = [UIColor greenColor];

[yellow addSubview:green];

//将黑色视图作为子视图放在黄色父视图中

UIView *black = [[UIView alloc]initWithFrame:CGRectMake(20, 20, 100, 100)];

black.backgroundColor = [UIColor blackColor];

[yellow addSubview:black];

//11.裁剪超出父视图之外的部分

yellow.clipsToBounds = YES;

NSLog(@"%ld",[self.window subviews].count);

//12.隐藏一个视图

//black.hidden = YES;

//倘若父视图被隐藏了,那么它的子视图也将要被隐藏

//yellow.hidden = YES;

//13.透明度:如果父视图被设置透明度,父视图上的所有子视图也会被一起设置透明度

//yellow.alpha = 0.6;

//以下方式可以设置父视图的透明度,子视图不受影响

yellow.backgroundColor = [[UIColor yellowColor] colorWithAlphaComponent:0.5];

//14.用户交互的设置

//YES 用户交互打开 (用户可以操作这个UI控件)

//NO 用户交互关闭 (用户不可以操作这个UI控件)

/*

UIView 默认情况交互打开

UIButton 默认用户交互打开

UIImageView 默认用户交互关闭

UILabel 默认用户交互关闭

*/

//先访问 window屏幕

//再访问 self.view (根控制器) -- 实际上也是UIView

//之后访问 self.view 中的子视图 myImageView

//最后访问 子视图myImageView中嵌套的子视图 myUIView

//如果其中一个环节关闭了用户交互 那么下面的子视图都不能访问到

window.userInteractionEnabled = YES;

/*

【注】

1⃣️用户交互层层传递,其中有一个视图的用户交互关闭,则不会继续往下传递

2⃣️子视图不要超过父视图的边界 否则也会改层终止传递 用户交互也是无效的(即使你已经在父视图打开用户交互)

*/

//15.销毁一个视图(removeFromSuperview)

//将一个控件从其父视图中移除

//[注意] 移除是有跟随性的 子视图也会全部移除

[yellow removeFromSuperview];

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: