UIView详解之一:UIView简介
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIView详解之一:UIView简介相关的知识,希望对你有一定的参考价值。
参考技术A UIView是所有UI控件的父类。UIView类的对象负责屏幕上一个矩形区域的显示和行为动作。我们熟知的UIButton,UIImageview等等都继承自UIView,因此,UIView所具备的属性和方法,其子类也都同样具备。UIView类(视图类)负责管理屏幕上的一块矩形区域,包括这个区域内的显示样式,比如背景颜色,大小,以及行为动作,例如监测用户点击等触碰事件。
视图还可以用于管理一个或者多个子视图。用户看到的某个样式,有可能是多个视图叠加后的显示效果。视图的这种布局方式,也称为视图层次,一个父视图可以包含任意多个子视图。同时,父视图的属性有时也会影响到子视图的样式以及用户交互行为。
总体来讲,视图类的主要作用有如下3个方面:
样式显示与动画:负责自身矩形区域内样式的显示,以及某些属性(大小、位置、角度)变化时的动画过渡效果;
布局与子视图管理:管理子视图
事件处理:接收触摸事件。
在ios开发中,UIView与UIViewController紧密协作,UIViewController负责UIView的加载与卸载。有关UIViewController的介绍,可以参考UIViewController相关教程: UIViewController介绍:1-创建控制器
2、UIKit族图
通过UIKit的族图可以看到,UIView继承自UIResponder,因此UIView可以响应用户交互。另外,我们熟知的一些常用控件都继承自UIView。需要特别说明的是,UIWindow也是继承自UIView,窗口可以认为是一个特殊的View。(有关UIWindow的知识,可以参见: UIWindow、UIView、UIViewController的关系 )
3、最常使用的UIView属性
在iOS开发中,有些UIView的属性是非常常用的,在此给大家简单列举一些,后面课程中会做详细讲解。
/*UIView有关样式的常用属性*/
@property(nonatomic)CGRectframe;
@property(nonatomic)CGRectbounds;
@property(nonatomic)CGPointcenter;
@property(nonatomic)CGAffineTransformtransform;
@property(nullable,nonatomic,copy)UIColor*backgroundColor;
@property(nonatomic)CGFloatalpha;
@property(nonatomic,getter=isHidden)BOOL hidden;
/*UIView管理子视图的常用属性和方法*/
@property(nullable,nonatomic,readonly)UIView*superview;
@property(nonatomic,readonly,copy)NSArray*subviews;
@property(nullable,nonatomic,readonly)UIWindow*window;
-(void)removeFromSuperview;
-(void)addSubview:(UIView*)view;
-(void)bringSubviewToFront:(UIView*)view;
/*UIView有关动画的属性和方法*/
+(void)animateWithDuration:(NSTimeInterval)duration animations:(void(^)(void))animations completion:(void(^__nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);
+(void)animateWithDuration:(NSTimeInterval)duration animations:(void(^)(void))animations NS_AVAILABLE_IOS(4_0);
/*UIView有关交互的常用属性与方法*/
@property(nullable,nonatomic,copy)NSArray*gestureRecognizers;
-(void)addGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer;
-(void)removeGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer;
iOS UI基础控件之UIView 详解
UIView 简介
什么是UIView
UIView
是窗口上的一块区域
,是iOS中所有控件的基类
,我们在app中所有能看见的都是直接或间接继承与UIView的.我们把UIView
叫做视图
.
UIView的作用
- 负责内部区域的内容渲染。
- 负责内部区域的触摸事件。
- 管理本身的所有子视图。
- 处理基本的动画。
UIView创建与使用
创建UIView
//通过frame创建View
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
//添加到父视图中
[self.window addSubview:view];
视图是一块区域,所以创建UIView的同时需要设置他的位置
和大小
,frame
是一个包含位置和大小的结构
体;
UIView 的基本属性
//设置视图的背景颜色
view.backgroundColor = [UIColor redColor];
//修改视图的大小或者位置
view.frame = CGRectMake(200, 100, 200, 200);
//设置视图的透明度[0.0, 1.0]
view.alpha = 0.5;
//设置是否隐藏
view.hidden = NO;
//设置视图的标签
view.tag = 100;
//中心点
view.center = self.window.center;
注意:这里特别说下frame
, 他是UIView一个非常重要的属性,决定了UIView的大小和位置;frame中设置的位置是以UIView的父视图
坐标系为基准,需要特别注意的是不可以修改frame中的某个成员变量,只能整体修改frame
子视图管理
- NSArray *subviews
- 管理所有的子视图(控件)
- 数组元素的顺序决定着子控件的显示层级顺序(下标越大的,越显示在上面)
- 所有子视图的管理都是对
subviews
数组的管理
添加视图
UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
view2.backgroundColor = [UIColor greenColor];
view2.tag = 200;
//将view2添加到view上
[view addSubview:view2];
通过上述代码添加后,view2
是view
的子视图,view
是view2
的父视图;
所有视图之间有层次级别关系,越是在后添加的视图,越显示在上面,前面添加的在下面
插入视图
//将一个yView插入到view的子视图中,序号为0的位置
//序号越小越靠近下面,序号越大越靠近上面
//序号的范围[0,子视图的个数)
[view insertSubview:yView atIndex:0];
//将oView插入到view的子视图中view2的下面
[view insertSubview:oView belowSubview:view2];
//将人View插入到view的子视图中, yView的上面
[view insertSubview:rView aboveSubview:yView];
删除视图
UIView中子视图管理和数组对元素的管理不一样,他不能通过父视图
去删除子视图
,只能子视图自己
将自己从父视图中删除.
//view2将自己从父视图中移除
[view2 removeFromSuperview];
获取视图
视图没有名字,但他有标识
,所以要想获取视图中的指定子视图
,我们可以通过子视图的标识来获取,方法如下:
//获取view下子视图标识为200的视图
UIView *subView = [view viewWithTag:200];
更改视图的显示层级
//通过父视图,将某个子视图在最上面显示
[view bringSubviewToFront:yView];
//通过父视图, 将某个子视图在最下显示
[view sendSubviewToBack:view2];
本文简书链接:http://www.jianshu.com/p/1f28240babd0
以上是关于UIView详解之一:UIView简介的主要内容,如果未能解决你的问题,请参考以下文章