UIView研究学习
UIView是一个IOS UI基础类,基本上所有的界面控件和视图都是继承于它。接下来,我们就研究一下它到底有什么功能:
要测试以下代码,必须给视图背景设置一个颜色,要不视图默认背景颜色为透明无色,而且还需要将视图添加到控制器视图中,并设置frame给其大小和位置,才能显示出来查看设置的效果。
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];//设置视图坐标位置x,y和宽,高 view.backgroundColor = [UIColor redColor];//设置背景颜色为红色 [self.view addSubview:view];//将视图添加到视图控制器的主视图中
1.设置视图大小,位置
一般有两种方法:
第一种,
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
第二种,
UIView * view = [[UIView alloc] init]; view.frame = CGRectMake(100, 100, 100, 100);
这里CGRectMake(100, 100, 100, 100)四个参数分别代表:视图相对父视图x轴距离、y轴距离、宽、高。
2.设置视图背景颜色
这里视图在被创建出来时,默认背景颜色是[UIColor clearColor]透明色,所以当我们在创建视图的时候,必须给其背景颜色,要不视图无法显示出来
以下是设置背景颜色的方法:
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; view.backgroundColor = [UIColor blackColor];
这里我们将视图设置成黑色背景,当然你还可以设置成别的颜色。
生成颜色还有两种方法,我们还用给视图设置黑色背景颜色举例如下:
第一种,
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; view.backgroundColor = [UIColor colorWithWhite:0.0 alpha:1];
第二种,
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; view.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1];
这里参数alpha代表透明度,传入0代表全透明,传入1代表不透明。
3.视图平移,旋转,缩放
平移:
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; view.transform = CGAffineTransformMakeTranslation(-100, -100);
等同于
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; view.transform = CGAffineTransformMake(1.0, 0.0, 0.0, 1.0, -100.0, -100.0);
这里CGAffineTransformMake的第5第、6个参数分别代表x轴平移量、y轴平移量,100减去100等于0,因此视图平移到(0,0)原点。
旋转:
在介绍视图旋转之前,先介绍一下一些数学常量,这些数学常量被hardcode在C语言库函数中math.h如下:
/* Even though these might be more useful as long doubles, POSIX requires that they be double-precision literals. */ #define M_E 2.71828182845904523536028747135266250 /* e */ #define M_LOG2E 1.44269504088896340735992468100189214 /* log2(e) */ #define M_LOG10E 0.434294481903251827651128918916605082 /* log10(e) */ #define M_LN2 0.693147180559945309417232121458176568 /* loge(2) */ #define M_LN10 2.30258509299404568401799145468436421 /* loge(10) */ #define M_PI 3.14159265358979323846264338327950288 /* pi */ #define M_PI_2 1.57079632679489661923132169163975144 /* pi/2 */ #define M_PI_4 0.785398163397448309615660845819875721 /* pi/4 */ #define M_1_PI 0.318309886183790671537767526745028724 /* 1/pi */ #define M_2_PI 0.636619772367581343075535053490057448 /* 2/pi */ #define M_2_SQRTPI 1.12837916709551257389615890312154517 /* 2/sqrt(pi) */ #define M_SQRT2 1.41421356237309504880168872420969808 /* sqrt(2) */ #define M_SQRT1_2 0.707106781186547524400844362104849039 /* 1/sqrt(2) */
这里包含圆周率计算常量等,我们旋转最常用到M_PI常量。
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; int angle = 90;//旋转角度 int direction = 1;//正1代表顺时针,负1代表逆时针 view.transform = CGAffineTransformMakeRotation(direction*M_PI*angle/180);//视图旋转
这里M_PI取上面C语言库函数常量,和初始位置相比视图顺时针旋转了90度。
4.设置视图的bounds,中心点,透明度
设置bounds:
UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 280, 250)]; [view1 setBounds:CGRectMake(-20, -20, 280, 250)]; view1.backgroundColor = [UIColor redColor]; [self.view addSubview:view1];//添加到self.view NSLog(@"view1 frame:%@========view1 bounds:%@",NSStringFromCGRect(view1.frame),NSStringFromCGRect(view1.bounds)); UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; view2.backgroundColor = [UIColor yellowColor]; [view1 addSubview:view2];//添加到view1上,[此时view1坐标系左上角起点为(-20,-20)] NSLog(@"view2 frame:%@========view2 bounds:%@",NSStringFromCGRect(view2.frame),NSStringFromCGRect(view2.bounds));
通过在视图控制器上添加两个视图,可以看出修改bounds属性的前两个参数能改变其子视图参考原点坐标,默认参考坐标为(0,0),但由于父视图view1参考坐标原点修改成(-20,-20),子视图view2在(0,0)点位置就会和父视图产生位置上的不同,相差20距离。剩下两个参数代表,视图的宽和高。
设置中心点:
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; view.center = CGPointMake(100, 100);
这里设置的是视图中心点在父视图坐标系中的位置。
设置透明度:
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; view.backgroundColor = [UIColor redColor]; view.alpha = 0.5;
这里我们先给视图一个背景颜色红色,让我们能看到视图,视图的透明度值在0到1之间,1为不透明,0为全透明,这里我们设置0.5为半透明。
5.动画

浙公网安备 33010602011771号