文章第一句话为“这是我参与「第四届青训营 」笔记创作活动的第5天
一、UIView功能
- 最基础的视图类,管理屏幕上一定区域的内容展示
- 作为各种视图类型的父类,提供基础的能力
- 进行外观、渲染和动画
- 响应区域内的事件
- 布局和管理子视图
- 布局
- 设置大小、位置(frame)
- addSubView
- 使用栈管理全部子视图
- 位置重叠的展示最后入栈的视图
- 可以随时调整位置
- 可以插入到指定位置
二、UIView的布局
- CGPoint:表示一个二维坐标系中的点,表示View的起始坐标位置
- struct CGPoint { CGFloat x; CGFloat y; };
- CGSize: 表示一个矩形的宽度和高度,表示View的大小
- struct CGSize { CGFloat width; CGFloat height; };
- CGRect: 确定了整个视图位置和大小
- struct CGRect { CGPoint origin; //偏移是相对父视图的 CGSize size; };
- Frame:描述当前视图在父视图中的位置和大小
//Frame:描述当前视图在父视图中的位置和大小
@property(nonatomic) CGRect frame;
//bounds:描述当前视图在其自身坐标系统中的位置和大小
@property(nonatomic) CGRect bounds;
//center:描述当前视图中心点在父视图中的位置
@property(nonatomic)CGPoint center;
2、View的常用属性
//形变属性(平移\缩放\旋转) @property(nonatomic)CGAffineTransform transform;
//YES:支持多触点 @property(nonatomic,getter=isMultipleTouchEnabled)BOOL multipleTouchEnabled; //default is NO
//YES:超出控件边框范围的内容都剪掉 @property(nonatomic)BOOL clipsToBounds;
//背景色 @property(nonatomic,copy)UIColor *backgroundColor;
//YES:不透明 NO:透明 @property(nonatomic,getter=isOpaque)BOOL opaque;
//YES:隐藏 NO:显示 @property(nonatomic,getter=isHidden)BOOL hidden;
//内容模式 @property(nonatomic) UIViewContentMode contentMode
//default is UIViewContentModeScaleToFill
3、View设置方法
//创建一个视图,请求内存
UIView *view = [[UIview alloc] init];
//设置视图背景
view.backgroundColor = [UIColor redColor];
//设置大小、位置
view.frame=CGRectMake(0, 0, self.view.window.bounds.size.width, self.veiw.window.bounds.size.height);//全屏大小
//将新建的View加入到主视图中
[self.view addSubview: view];
三、UIView的生命周期
//当视图添加/移除子视图时调用
- (void)didAddSubview:(UIView *)subview;
- (void)willRemoveSubview:(UIView *)subview;
// 当视图即将加入父视图时 / 当视图即将从父视图移除时调用
- (void)willMoveToSuperview:(nullable UIView *)newSuperview;
// 当视图已经加入父视图时 / 当视图从父视图移除时调用
- (void)didMoveToSuperview;
// 当视图即将加入父视图时 / 当视图即将从父视图移除时调用
- (void)willMoveToWindow:(nullable UIWindow *)newWindow;
// 当视图已经加入父视图时 / 当视图从父视图移除时调用
- (void)didMoveToWindow;
四、UIView的方法
-
- (instancetype)init;
-
- (void)dealloc;
-
- (void)removeFromSuperview;
-
- (void)drawRect:(CGRect)rect;
-
- (void)layoutSubviews;
1、图层操作
- 新增和移除Subview
[Subview removeFromSuperview]; //将Subview从当前的UIView中移除
[UIView addSubview:Subview]; //替UIView增加一个Subview
- 在UIView中将Subview往前或是往后移动一个图层
[UIView bringSubviewToFront:Subview]; //将Subview往前移动一个图层(与它的前一个图层对调位置)//将Subview往前移动一个图层(与它的前一个图层对调位置)
[UIView sendSubviewToBack:Subview]; //将Subview往后移动一个图层(与它的后一个图层对调位置)
- 在UIView中使用索引Index交换两的Subview彼此的图层层级
[UIView exchangeSubviewAtIndex:indexA withSubviewAtIndex:indexB]; //交换两个图层
- 使用Subview的变数名称取得它在UIView中的索引值(Index )
NSInteger index = [[UIView subviews] indexOfObject:Subview名称]; //取得Index
- 替Subview加上NSInteger 的标记(Tag)好让之后它们分辨彼此
[Subview setTag:NSInteger]; //加上标记
[UIView viewWithTag:NSInteger]; //通过标记得到view 返回值为UIView
- 取得UIView中所有的Subview,呼叫此方法会传回一个 NSArray
[UIView subviews] ; //取的UIView下的所有Subview
五、视图分类
-
控件:继承自UIController,能够响应用户高级事件,如UIButton、UISlider、UISwitch
-
窗口:窗口是一个UIWindow对象。一个iOS应用只能有一个UIWindow对象,它是所有子视图的根容器。
-
容器视图:包括UIScrollView、UIToolbar及其它们的子类。
-
显示视图:用于显示信息,包括UIImageView、UILabel、UIProgressView和UIActivityIndicatorView等。
-
文本视图和Web视图:提供能显示多行文本的视图,包括UITextView和UIWebView,其中UITextView也属于容器视图,UIWebView是能够加载HTML代码的视图
-
导航视图:为用户提供从一个屏幕到另外一个屏幕的导航(跳转)视图,包括UITabBar和UINavigationBar。
-
警告框和操作表:用于给用户提供一种反馈或者与用户进行交互。