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.动画

posted @ 2015-09-21 15:03  IT赏金猎人  阅读(116)  评论(0)    收藏  举报