UIView详解1
一个UIView的实例就是一个视图,表示的是屏幕上的一块矩形区域,负责这块矩形区域的描绘以及和用户的交互。
第一、UIView的可视化属性
1. backgroundColor 背景属性
2. hidden 表示该view是否隐藏,
hidden属性为YES时视图隐藏,否则不隐藏。
注意事项:
当视图完全透明或者隐藏时,不能响应触摸消息。
也就是alpha等于0.0或者hidden为YES的时候,但是当alpha<0.01的时候,视图就已经接收不到消息了。
视图的alpha值会影响子视图的绘制,但是子视图的alpha值不变。
另一方面,这个消息和alpha 是有关系的。 一个不透明视图需要整个边界里面的内容都是不透明的。基于这个原因,opaque设置为YES,要求对应的alpha必须为1.0。如果一个UIView实例opaque被设置为YES, 而同时它又没有完全填充它的边界(bounds),或者它包含了整个或部分的透明的内容视图,那么将会导致未知的结果。
因此,如果视图部分或全部支持透明,那么你必须把opaque这个值设置为NO.
5. clipsToBounds
在类的层次结构中,如果clipsTobounds设为YES,超出superView的部分subview就不会显示,否则会做显示, 默认情况下是NO。
6. clearsContextBeforeDrawing
A Boolean value that determines whether the receiver’s bounds should be automatically cleared before drawing.
7. layerClass和 layer property 跟Core Animation layer有关
第二、管理视图层次
1. superview property 返回该view的superView
sample:
[self.windowaddSubview:self.viewController.view];
NSLog(@"the superView is %@",[self.viewController.viewsuperview]);
2. subviews property 返回该view的subviews
sample:
NSLog(@"the suberViews are %@",[self.windowsubviews]);
3. window
property 返回该view的window,如果没有返回nil
NSLog(@"the window is %@",[self.viewController.viewwindow]);
4. – addSubview:
5. – bringSubviewToFront:
把指定的子view放到最顶层,其父视图调用bringSubviewToFront()方法。
sample:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIButton *button=[[[UIButton alloc] initWithFrame:CGRectMake(120, 120, 50, 50)] autorelease];
button.backgroundColor=[UIColor redColor];
[self.view addSubview:button]; UIButton *button2=[[[UIButton alloc] initWithFrame:CGRectMake(130, 130, 50, 50)] autorelease];
button2.backgroundColor=[UIColor blueColor]; [self.view addSubview:button2];
[self.view bringSubviewToFront:button]; }
6.--sendSubviewToBack:
将一个UIView层推送到背后只需要调用其父视图的 sendSubviewToBack()方法。
sample:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIButton *button=[[[UIButton alloc] initWithFrame:CGRectMake(120, 120, 50, 50)] autorelease];
button.backgroundColor=[UIColor redColor];
[self.view addSubview:button]; UIButton *button2=[[[UIButton alloc] initWithFrame:CGRectMake(130, 130, 50, 50)] autorelease];
button2.backgroundColor=[UIColor blueColor]; [self.view addSubview:button2];
[self.view sendSubviewToBack:button2]; //[self.view bringSubviewToFront:button]; }
7.– removeFromSuperview
sample:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIButton *button=[[[UIButton alloc] initWithFrame:CGRectMake(120, 120, 50, 50)] autorelease];
button.backgroundColor=[UIColor redColor];
[self.view addSubview:button]; UIButton *button2=[[[UIButton alloc] initWithFrame:CGRectMake(130, 130, 50, 50)] autorelease];
button2.backgroundColor=[UIColor blueColor]; [self.view addSubview:button2]; [button removeFromSuperview];
}
8. – insertSubview:atIndex:
Parameters
view
The view to insert. This value cannot be nil.
index
The index in the array of the subviews property at which to insert the view. Subview indices start at0 and cannot be greater than the number of subviews.
sample:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIButton *button=[[[UIButton alloc] initWithFrame:CGRectMake(120, 120, 50, 50)] autorelease];
button.backgroundColor=[UIColor redColor];
[self.view addSubview:button]; UIButton *button2=[[[UIButton alloc] initWithFrame:CGRectMake(130, 130, 50, 50)] autorelease];
button2.backgroundColor=[UIColor blueColor]; [self.view addSubview:button2]; UIButton *button3=[[[UIButton alloc] initWithFrame:CGRectMake(120, 120, 100, 100)] autorelease];
button3.backgroundColor=[UIColor greenColor];
[self.view insertSubview:button3 atIndex:2];
}
9.– insertSubview:aboveSubview:
Inserts a view above another view in the view hierarchy.
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview
sample:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIButton *button=[[[UIButton alloc] initWithFrame:CGRectMake(120, 120, 50, 50)] autorelease];
button.backgroundColor=[UIColor redColor];
[self.view addSubview:button]; UIButton *button2=[[[UIButton alloc] initWithFrame:CGRectMake(130, 130, 50, 50)] autorelease];
button2.backgroundColor=[UIColor blueColor]; [self.view addSubview:button2]; UIButton *button3=[[[UIButton alloc] initWithFrame:CGRectMake(120, 120, 100, 100)] autorelease];
button3.backgroundColor=[UIColor greenColor]; [self.view insertSubview:button3 aboveSubview:button];
}
10.– insertSubview:belowSubview:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIButton *button=[[[UIButton alloc] initWithFrame:CGRectMake(120, 120, 50, 50)] autorelease];
button.backgroundColor=[UIColor redColor];
[self.view addSubview:button]; UIButton *button2=[[[UIButton alloc] initWithFrame:CGRectMake(130, 130, 50, 50)] autorelease];
button2.backgroundColor=[UIColor blueColor]; [self.view addSubview:button2]; UIButton *button3=[[[UIButton alloc] initWithFrame:CGRectMake(120, 120, 100, 100)] autorelease];
button3.backgroundColor=[UIColor greenColor];
[self.view insertSubview:button3 belowSubview:button];
}
11.– exchangeSubviewAtIndex:withSubviewAtIndex:
- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2
Parameters
index1
The index of the first subview in the receiver.
index2
The index of the second subview in the receiver.
sample:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIButton *button=[[[UIButton alloc] initWithFrame:CGRectMake(120, 120, 50, 50)] autorelease];
button.backgroundColor=[UIColor redColor];
[self.view addSubview:button]; UIButton *button2=[[[UIButton alloc] initWithFrame:CGRectMake(130, 130, 50, 50)] autorelease];
button2.backgroundColor=[UIColor blueColor]; [self.view addSubview:button2]; UIButton *button3=[[[UIButton alloc] initWithFrame:CGRectMake(120, 120, 100, 100)] autorelease];
button3.backgroundColor=[UIColor greenColor];
[self.view addSubview:button3];
[self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:3];
}
12
– isDescendantOfView:
Returns a Boolean value indicating whether the receiver is a subview of a given view or identical to that view.
- (BOOL)isDescendantOfView:(UIView *)view
sample:
NSLog(@"the result is %d",[button3isDescendantOfView:self.view]);
UIView详解1的更多相关文章
- UIView详解
MVC架构模式 MVC(Model-View-Controller)是实现数据和显示数据的视图分离的架构模式(有一定规模的应用都应该实现数据和显示的分离).其中,M代表模型,就是程序中使用的数据和 ...
- UI第三节——UIView详解
- (void)viewDidLoad { [super viewDidLoad]; UIView *redView = [[UIView alloc] initWithFrame:CGRectMak ...
- UIView详解2
第三.Configuring the Event-Related Behavior 1. userInteractionEnabled property A Boolean value that ...
- 《iOS 7 应用开发实战详解》
<iOS 7 应用开发实战详解> 基本信息 作者: 朱元波 管蕾 出版社:人民邮电出版社 ISBN:9787115343697 上架时间:2014-4-25 出版日期:2014 年5 ...
- 详解CALayer 和 UIView的区别和联系
详解CALayer 和 UIView的区别和联系 前言 前面发了一篇iOS 面试的文章,在说到 UIView 和 CALayer 的区别和联系的时候,被喵神指出没有切中要点,所以这里就 CALay ...
- 【好程序员笔记分享】——UIView与CALayer详解
-iOS培训,iOS学习-------型技术博客.期待与您交流!------------ UIView与CALayer详解 研究Core Animation已经有段时间了,关于Core Animati ...
- 【iOS自定义键盘及键盘切换】详解
[iOS自定义键盘]详解 实现效果展示: 一.实现的协议方法代码 #import <UIKit/UIKit.h> //创建自定义键盘协议 @protocol XFG_KeyBoardDel ...
- iOS开发——加载、滑动翻阅大量图片解决方案详解
加载.滑动翻阅大量图片解决方案详解 今天分享一下私人相册中,读取加载.滑动翻阅大量图片解决方案,我想强调的是,编程思想无关乎平台限制. 我要详细说一下,在缩略图界面点击任意小缩略图后,进入高清 ...
- UI第六节——UINavigationController 详解
1. UINavigationController 是一个容器类.里面盛放的是UIViewController. 容器的意思是,如果你不放入UIViewController,里面就是空的,什么也没有. ...
随机推荐
- 循环训练(for的嵌套、while、do while)以及异常处理
For的嵌套 练习一: 练习二: 练习三: 练习四: while的使用方法: 示例一: 示例二: 示例三: while的练习题: do while的使用示例: 异常处理示例: try catch ...
- IOC容器初始化——BeanDefinition的Resource定位
以编程的方式使用DefaultListableBeanFactory时,首先定义一个Resource来定位容器使用的BeanDefinition.这是使用的是ClassPathResource,意味着 ...
- Myeclipse代码提示及如何设置自动提示
Myeclipse代码提示及如何设置自动提示 (2011-11-18 00:38:41) 转载▼ 标签: 杂谈 分类: Java 1. 设置代码自动提示window --> preference ...
- 报错:loaded the "" nib but didn't get a UITableView
在加载OpenPosition界面的时候报错:loaded the "" nib but didn't get a UITableView 原因: If you have a NI ...
- nfs:server is not responding,still trying 原因与解决
方案(学自他人) nfs:server is not responding,still trying的解决方法 (2009-04-20 10:20) 方法1 : 我在arm上通过NFS共享文件时出现下 ...
- NET Core,跨平台的轻量级RPC
NET Core,跨平台的轻量级RPC:Rabbit.Rpc 特性一览 Apache License 2.0协议开源 支持客户端负载均衡(提供了轮询.随机算法的实现) 支持ZooKeeper和文件共享 ...
- struts2 convention-plugin
导入这个插件,该插件的作用是替换掉struts.xml 原则是没有配置,全是约定 基本步骤 1.新建HomeAction,里面有个execute方法return success,请求home.acti ...
- 基于visual Studio2013解决C语言竞赛题之0302字符数出
题目 解决代码及点评 根据题目要求,只要根据用户输入的字母,判断字母之后,给出相应的输出即可 在以下代码中,f32函数实现了该功能,通过if条件判断语句 #include <stdio.h ...
- FMDB的基本应用
FMDB简介 iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较频繁.于是,就出现了一系列将AQLite API进行封装的库,例如FMDB.PlausibleDa ...
- 如何快速方便的输出向量vector容器中不重复的内容
在vector容器中,存入的内容难免会出现重复,那么如何快速输出或提前非重复的那些数据呢,即重复的数据只输出一次,直观的方法是每次输出都要通过循环比较是否已经输出过,这种方法还是比较费时的,可以利用u ...