UIView是负责在iOS里面显示一切内容的容器,UIView是所有View视图的父类,包括UIWindow,也是UIView的子类。
1.UIView 重要属性
frame // 指定视图的坐标和大小,相对于父视图的坐标系;
bounds // 边界属性,定义视图的位置和大小,是相对于自身的坐标系;
center // frame的中心坐标,相对于父视图的坐标系;
alpha // 透明度;
backgroundColor // 视图的背景颜色;
userInteractionEnabled // 是否可以响应点击(父视图如果不接受用户交互事件,子视图同样也不会接受用户事件);
autouresizingMask // 如何调整自己的大小,当superView的bounds发生改变时;
autouresizsSubviews // 是否自动调整subviews的大小,默认为YES;
clipsToBounds // 子视图超出父视图bounds后,是否裁减,默认为false;
// (如果子视图超出了父视图的范围,默认情况下在界面上子视图会全部显示出来,但超出的范围不会接受到用户事件)
每个view都有一个tag属性,可以通过它来快速定位某个subview;
-(UIView *)viewWithTag:(NSInteger)tag;
-(void)setTag:(NSInteger)tag;
View圆角
view.layer.cornerRadius = 5; // 圆角半径
view.layer.masksToBounds = YES; // 裁剪layer多余的部分
如果在代码中设置圆角无效,可参考:在initWithCoder中,设置view.layer.masksToBounds无效,则还需要在awakeFromNib中再设置;
2.UIView 常见方法
initWithFrame:(CGRect)frame // 初始化
addSubview: // 添加视图
insertSubview:atIndex: // 插入视图
insertSubview:aboveSubview:
insertSubview:belowSubview:
sendSubviewToBack:
exchangeSubviewAtIndex:withSubviewAtIndex:
removeFromSuperview: // 移除视图
setNeedsLayout: // 强制重新布局子控件(此方法会自动调用layoutSubviews)
[view performSelector: withObject: afterDelay: ]; // 延迟一段时间执行某个方法;
[view.subviews makeObjectsPerformSelector: withObject:]; // 让view的全部subview执行某一个方法,selector(方法名);
-(void)bringSubviewToFront:(UIView *)view // 把某一个view(v)显示在父view的最上层;
3.initWithCoder和awakeFromNib
当