UIView的详细用法

UIView的使用

1.UIView创建和使用

//  重要性:

(1) 常见控件父类或间接父类都是UIView

UILabel->UIView

UIImageView->UIView

UIButton->UIControl->UIView

(2)自定义控件

//  继承与UIView, view加上其他控件

(3)使用UIView作为界面布局, UIView作为其他控件的容器

//理解: 显示一块矩形区域

UIView *view1 = [[UIView alloc] init];

view1.frame = CGRectMake(100, 100, 100, 100);

view1.backgroundColor = [UIColor redColor];

[self.view addSubview:view1];

2.常用属性

//位置

view1.frame

//只改大小, 不改位置

view1.bounds = CGRectMake(0, 0, 50, 50);

view1.backgroundColor = [UIColor yellowColor];

//使用tag区分不同控件

view1.tag = 100;

//设置中心点位置

view1.center = CGPointMake(50, 50);

//是否打开用户交互

//UILabel和UIImageView控件这个值是NO

//  按钮加入到UIImageView没有反应

view1.userInteractionEnabled = YES;

//view设置圆角

view1.layer.cornerRadius = 10;

view1.clipsToBounds = YES;

//是否隐藏

view1.hidden = YES;

view1.hidden = NO;

//透明度

view1.alpha = 0.7;

//3.常用方法

view1 addSubview:<#(UIView *)#>

//界面上移除控件

[view1 removeFromSuperview];

//视图层级关系方法

view1.frame = CGRectMake(100, 100, 100, 100);

UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(150, 150, 100, 100)];

view2.backgroundColor = [UIColor blueColor];

[self.view addSubview:view2];

//放到最前面

[self.view bringSubviewToFront:view1];

//最后面

[self.view sendSubviewToBack:view1];

//插入视图

UIView *view3 = [[UIView alloc] initWithFrame:CGRectMake(125, 125, 100, 100)];

view3.backgroundColor = [UIColor greenColor];

//[self.view addSubview:view3];

[self.view insertSubview:view3 belowSubview:view2];

//属性

//所有子视图

self.view.subviews

//父视图

self.view.superview

//4.使用UIView进行控件自定义和界面布局

view+2个label+一个图片

//原理: 只是原理展示, 控件定制需要继承

UIView *photoView = [[UIView alloc] initWithFrame:CGRectMake(0, 300, 320, 100)];

photoView.backgroundColor = [UIColor lightGrayColor];

[self.view addSubview:photoView];

//头像

UIImageView *headImageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 60, 60)];

headImageView.image = [UIImage imageNamed:@"defaultHead.png"];

[photoView addSubview:headImageView];

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 20, 100, 30)];

label.text = @"风景";

[photoView addSubview:label];

UILabel *timeLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 60, 100, 30)];

timeLabel.text = @"2014-08-26";

[photoView addSubview:timeLabel];

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dealTap)];

[photoView addGestureRecognizer:tap];

//5.UIView的动画(扩展: 仿射变换)

UIImageView *bullet = [[UIImageView alloc] initWithFrame:CGRectMake(10, 450, 20, 20)];

bullet.image = [UIImage imageNamed:@"bullet.png"];

[self.view addSubview:bullet];

//    [UIView animateWithDuration:2 animations:^{

//        bullet.frame = CGRectMake(300, 450, 50, 50);

//        bullet.alpha = 0;

//    }];

//

[UIView animateWithDuration:4 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{

bullet.frame = CGRectMake(300, 450, 50, 50);

//bullet.alpha = 0;

} completion:^(BOOL finished) {

[bullet removeFromSuperview];

}];

}

-(void)dealTap

{

NSLog(@"点击相册");

}

UIView的相互嵌套

//能干什么: 组合出系统没有的控件

//实例: 图片列表界面需要按钮

//  左边一个图片, 右边两个label

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

button.frame = CGRectMake(0, 20, 320, 100);

button.backgroundColor = [UIColor grayColor];

[self.window addSubview:button];

UIImage *image = [[UIImage imageNamed:@"table_cell_bg.png"] stretchableImageWithLeftCapWidth:8 topCapHeight:0];

[button setBackgroundImage:image forState:UIControlStateNormal];

//按钮的左边加上图片 defaultHead.png

UIImageView *headView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 80, 80)];

headView.image = [UIImage imageNamed:@"defaultHead.png"];

[button addSubview:headView];

UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 10, 200, 30)];

nameLabel.text = @"美女";

[button addSubview:nameLabel];

UILabel *detailLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 65, 200, 30)];

detailLabel.text = @"12-11 6:09 (12张)";

detailLabel.font = [UIFont systemFontOfSize:14];

[button addSubview:detailLabel];

总结

(1). 几乎所有控件都是UIView的子类或间接子类, UIView有个方法是addSubview, 意味"理论上"任何控件都可以相互组合

(2) 组合 现在注意坐标是相对坐标

按钮直接加上图片上, 需要开启图片的用户交互

//3. UIView层次感

UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(100, 200, 100, 100)];

view1.backgroundColor = [UIColor redColor];

[self.window addSubview:view1];

UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(150, 250, 100, 100)];

view2.backgroundColor = [UIColor greenColor];

[self.window addSubview:view2];

UIView *view3 = [[UIView alloc] initWithFrame:CGRectMake(200, 300, 100, 100)];

view3.backgroundColor = [UIColor blueColor];

[self.window addSubview:view3];

//后面加入的view在最上层

//(1)某个view放在上面

[self.window bringSubviewToFront:view1];

//(2)某个view放在下面

[self.window sendSubviewToBack:view1];

//(3)知道一个视图的父视图

UIView *sview = view1.superview;

NSLog(@"w=%f h=%f",sview.frame.size.width,

sview.frame.size.height);

//(4)一个视图中有多少子视图

NSArray *array = self.window.subviews;

NSLog(@"array = %@",array);

//(5)让一个视图消失

//view1.hidden = YES;

//view1.alpha = 0;

//彻底从父视图消息

//[view1 removeFromSuperview];

//(6)插入视图

//添加的黄色的视图

UIView *view4 = [[UIView alloc] initWithFrame:CGRectMake(50, 150, 100, 100)];

view4.backgroundColor = [UIColor yellowColor];

[self.window insertSubview:view4 belowSubview:view1];

//(7)交换两个视图的层次

[self.window exchangeSubviewAtIndex:3 withSubviewAtIndex:4];

时间: 2024-10-18 09:38:51

UIView的详细用法的相关文章

Display:Block 详细用法

根据CSS规范的规定,每一个网页元素都有一个display属性,用于确定该元素的类型,每一个元素都有默认的display属性值,比如div元素,它的默认display属性值为"block",成为"块级"元素(block-level):而span元素的默认display属性值为"inline",称为"行内"元素. 块级元素: 动占据一定矩形空间,可以通过设置高度.宽度.内外边距等属性,来调整的这个矩形的样子: 行内元素: 自己的

DOM Style样式对象的详细用法

DOM Style样式对象的详细用法 HTML Style样式比较复杂,相应访问.修改方法也有所差异.参考相关资料,整理如下. 典型Html文件如下,有三种定义方式. <head>     <style type="text/css">                /* 内部样式 */       h3 {color:green;}     </style>             <!-- 外部样式 style.css -->    

文件/目录权限设置命令chmod的详细用法

chmod是文件/目录权限设置的命令,在Linux中经常遇到,本博文以下总结chmod的详细用法. Linux/Unix的档案调用权限分为三级,即档案拥有者user.群组group.其他other.u表示该档案的拥有者,g表示与该档案的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这三者皆是. + 表示增加权限.- 表示取消权限.= 表示唯一设定权限. r表示可读取,w表示可写入,x表示可执行. 举例说明: (1).将档案file1.txt 设为所有人皆可读取: chmod u

mysql中游标在存储过程中的详细用法

昨天写的一个东东,分享下给大家. drop PROCEDURE  if exists sp_cleanUserData; CREATE  PROCEDURE `sp_cleanUserData`() BEGIN /*定义游标*/ declare v_dt bigint(20) default 0 ; declare v_num INT DEFAULT 0; /*游标循环到末尾时给定义的常量赋值*/ declare cur_userId   CURSOR FOR select  userId fr

Linux中find、grep命令详细用法

在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下: find命令 find命令的一般形式 find命令的常用选项及实例 find与xargs grep命令 grep命令的一般形式 grep正则表达式元字符集(基本集) grep命令的常用选项及实例 1.find命令 find命令是一个无处不在命令,是linux中最有用的命令之一.find命令用于:在一个目录(及子目录)中搜索文件,你可以

SplitContainer 控件详细用法(转)

1.可以将 Windows 窗体 SplitContainer 控件看作是一个复合体,它是由一个可移动的拆分条分隔的两个面板.当鼠标指针悬停在该拆分条上时,指针将相应地改变形状以显示该拆分条是可移动的.使用 SplitContainer 控件,可以创建复合的用户界面(通常,在一个面板中的选择决定了在另一个面板中显示哪些对象).这种排列对于显示和浏览信息非常有用.拥有两个面板使您可以聚合不同区域中的信息,并且用户可以轻松地使用拆分条(也称为"拆分器")调整面板的大小.另外,还可以嵌套多个

chmod和chown命令详细用法

Linux下数字表示文件的操作权限(777,755,..) Linux下,查看某路径下用(ls -l)查看所有文件的详细属性列表时,会看到文件的操作权限,类似"drwxr-xr-x"的字符串. 这串字符可以分成4段理解,结构为"d + 文件所有者操作权限 + 文件所有者所在组操作权限 + 其余人的操作权限": 1,第一段:例子中字母"d",表示文件所在目录 2,第二段:例子中字符串"rwx",表示文件所有者对此文件的操作权限

Java包(Package)的详细用法(转)

Java包(Package)的详细用法 http://wenwen.soso.com/z/q229375145.htm 当一个大型程序交由数个不同的程序人员开发时,用到相同的类名是很有可能的,那么如果发生了这样的事件我们该怎么办那?,在我们java程序开发中为了避免上述事件,提供了一个包的概念(package),那么既然有了这样一种方法能避免上述事件,那么我们怎样使用package那?,使用方法很简单我们只需要在我们写的程序第一行使用package关键字来声明一个包就行了,例如我们来声明一个名为

AWK详细用法

awk非常的优秀,运行效率高,而且代码简单,对格式化的文本处理能力超强.基本上grep和sed能干的活awk全部都能干,而且干得更好. 先来一个很爽的例子:文件a,统计文件a的第一列中是浮点数的行的浮点数的平均值.用awk来实现只需要一句话就可以搞定(当然,这个东东用python也可以很轻松的实现,只是无论如何都得新建一个文件:别妄想用bash shell来做,那可是浮点数!!!)$cat a1.021 331#.ll   442.53 6ss    7awk 'BEGIN{total = 0;