对View的一些理解和认识
2017-02-04 17:17
363 查看
子视图是以栈的方式存放的。
栈:
"栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方;
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表(单口),它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据,就像弹夹装弹一样;
压栈的操作使得栈顶的地址减小,弹出的操作使得栈顶的地址增大。(栈的大小一定,入栈时地址会越来越小,出站地址会变大);
self.view.subViews
[self.view
addSubview:redView];
[self.view
addSubview:blueView];
总结:addSubview是一层一层往上加,新的放到最上层(有点千层饼的味道);
[self.view
addSubview:redView];
[self.view
addSubview:blueView];
[self.view
insertSubview:greenView
atIndex:1];
// 添加greenView到self.view的层1处;
aboveSubview
[self.view
addSubview:redView];
[self.view
addSubview:blueView];
[self.view
insertSubview:greenView
aboveSubview:redView]; //在self.View上的redView上面插入greenView
belowSubview
[self.view
addSubview:redView];
[self.view
addSubview:blueView];
//加载到redView视图之下
[self.view
insertSubview:greenView
belowSubview:redView]; ////在self.View上的redView下面插入greenView;
最上面:
[self.view insertSubview:CustomView atIndex:[self.view.subviews count]];
最下面:
[self.view insertSubview:CustomView atIndex:0];
由此可见,最下层index是从0开始的数组;
常用方法:
//将Subview从当前的UIView中移除
[Subview removeFromSuperview];
//将Subview往前移动一个图层(与它的前一个图层对调位置)
[UIView bringSubviewToFront:Subview];
//将Subview往后移动一个图层(与它的后一个图层对调位置)
[UIView sendSubviewToBack:Subview];
//交换两个图层
[UIView exchangeSubviewAtIndex:indexA withSubviewAtIndex:indexB];
使用 Subview 的变数名称取得它在 UIView 中的索引值(Index )。
//取得Index
NSInteger index = [[UIView subviews] indexOfObject:Subview名称];
替 Subview 加上 NSInteger 的註记 (Tag),好让之后它们分辨彼此。
//加上註记
[Subview setTag:NSInteger];
最后是取得 UIView 中所有的 Subview,呼叫此方法会传回一个 NSArray,并以由后往前的顺序列出这些 Subview,下图中是列出范例图片里 Root 中所有的 Subview。
//取的UIView下的所有Subview
[UIView subviews]
如果要移除一个 UIView 的所有子视图,SDK 里没有 remove all 之类的方法。可以用 for loop 循环调用 – removeFromSuperview 来移除
例如:
for(UIView *view in [self.view subviews])
{
[view removefromsuperview]
}
1.CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)(平移:设置平移量)
2.CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)(缩放:设置缩放比例)仅通过设置缩放比例就可实现视图扑面而来和缩进频幕的效果。
3.CGAffineTransformMakeRotation(CGFloat angle)(旋转:设置旋转角度)
以上3个都是针对视图的原定最初位置的中心点为起始参照进行相应操作的,在操作结束之后可对设置量进行还原:
view.transform=CGAffineTransformIdentity;
栈:
"栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方;
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表(单口),它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据,就像弹夹装弹一样;
压栈的操作使得栈顶的地址减小,弹出的操作使得栈顶的地址增大。(栈的大小一定,入栈时地址会越来越小,出站地址会变大);
self.view.subViews
[self.view
addSubview:redView];
[self.view
addSubview:blueView];
总结:addSubview是一层一层往上加,新的放到最上层(有点千层饼的味道);
insertSubView
[self.viewaddSubview:redView];
[self.view
addSubview:blueView];
[self.view
insertSubview:greenView
atIndex:1];
// 添加greenView到self.view的层1处;
aboveSubview
[self.view
addSubview:redView];
[self.view
addSubview:blueView];
[self.view
insertSubview:greenView
aboveSubview:redView]; //在self.View上的redView上面插入greenView
belowSubview
[self.view
addSubview:redView];
[self.view
addSubview:blueView];
//加载到redView视图之下
[self.view
insertSubview:greenView
belowSubview:redView]; ////在self.View上的redView下面插入greenView;
最上面:
[self.view insertSubview:CustomView atIndex:[self.view.subviews count]];
最下面:
[self.view insertSubview:CustomView atIndex:0];
由此可见,最下层index是从0开始的数组;
常用方法:
//将Subview从当前的UIView中移除
[Subview removeFromSuperview];
//将Subview往前移动一个图层(与它的前一个图层对调位置)
[UIView bringSubviewToFront:Subview];
//将Subview往后移动一个图层(与它的后一个图层对调位置)
[UIView sendSubviewToBack:Subview];
//交换两个图层
[UIView exchangeSubviewAtIndex:indexA withSubviewAtIndex:indexB];
使用 Subview 的变数名称取得它在 UIView 中的索引值(Index )。
//取得Index
NSInteger index = [[UIView subviews] indexOfObject:Subview名称];
替 Subview 加上 NSInteger 的註记 (Tag),好让之后它们分辨彼此。
//加上註记
[Subview setTag:NSInteger];
最后是取得 UIView 中所有的 Subview,呼叫此方法会传回一个 NSArray,并以由后往前的顺序列出这些 Subview,下图中是列出范例图片里 Root 中所有的 Subview。
//取的UIView下的所有Subview
[UIView subviews]
如果要移除一个 UIView 的所有子视图,SDK 里没有 remove all 之类的方法。可以用 for loop 循环调用 – removeFromSuperview 来移除
例如:
for(UIView *view in [self.view subviews])
{
[view removefromsuperview]
}
CGAffineTransform的使用
1.CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)(平移:设置平移量)2.CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)(缩放:设置缩放比例)仅通过设置缩放比例就可实现视图扑面而来和缩进频幕的效果。
3.CGAffineTransformMakeRotation(CGFloat angle)(旋转:设置旋转角度)
以上3个都是针对视图的原定最初位置的中心点为起始参照进行相应操作的,在操作结束之后可对设置量进行还原:
view.transform=CGAffineTransformIdentity;
相关文章推荐
- iPhone:UITableVIew 的一些理解
- UIView的一些基本方法理解:loadView、viewDidLoad、viewDidUnload、viewWillAppear、viewWillDisappear
- IOS学习笔记10-UIView的一些基本方法理解:loadView、viewDidLoad、viewDidUnload、viewWillAppear、viewWillDisappear、
- 对于NAS,IP SAN以及iSCSCI SAN存储的一些认识和理解
- 关于view重绘的一些认识
- UIView的一些基本方法理解:loadView、viewDidLoad、viewDidUnload、viewWillAppear、viewWillDisappear、
- Android中Surface和SurfaceView的一些理解和总结
- view视图的一些理解
- Android中Surface和SurfaceView的一些理解和总结
- 我对CSS vertical-align的一些理解与认识(一)
- Android 对View的一些理解
- Android中Surface和SurfaceView的一些理解和总结
- Android View 系统的一些理解
- Android中Surface和SurfaceView的一些理解和总结
- css vertical-align属性的一些理解与认识(二) text-top篇
- Android学习札记3:对View.MeaureSpec的一些理解
- 对 Java 中 synchronized(this) 的一些理解和认识
- 关于UITableView及dequeueReusableCellWithIdentifier的一些理解
- Android中Surface和SurfaceView的一些理解和总结
- 我对CSS vertical-align的一些理解与认识(一)