对View的一些理解和认识


子视图是以栈的方式存放的

栈:  

    "栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方;

     栈作为一种数据结构是一种只能在一端进行插入和删除操作的特殊线性表(单口),它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据,就像弹夹装弹一样;

      压栈的操作使得栈顶的地址减小,弹出的操作使得栈顶的地址增大。(栈的大小一定,入栈时地址会越来越小,出站地址会变大);栈的模型




self.view.subViews


[self.view addSubview:redView];

[self.view addSubview:blueView];


总结:addSubview是一层一层往上加,新的放到最上层(有点千层饼的味道);





insertSubView


 [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开始的数组;




常用方法:

  1. //将Subview从当前的UIView中移除   
  2. [Subview removeFromSuperview]; 

  1. //将Subview往前移动一个图层(与它的前一个图层对调位置)   
  2. [UIView bringSubviewToFront:Subview];   

  1. //将Subview往后移动一个图层(与它的后一个图层对调位置)   
  2. [UIView sendSubviewToBack:Subview];  

  1. //交换两个图层   
  2. [UIView exchangeSubviewAtIndex:indexA withSubviewAtIndex:indexB]; 

 使用 Subview 的变数名称取得它在 UIView 中的索引值(Index )。


  1. //取得Index   
  2. NSInteger index [[UIView subviews] indexOfObject:Subview名称];   

 替 Subview 加上 NSInteger 的註记 (Tag),好让之后它们分辨彼此。


  1. //加上註记   
  2. [Subview setTag:NSInteger];   

 最后是取得 UIView 中所有的 Subview,呼叫此方法会传回一个 NSArray,并以由后往前的顺序列出这些 Subview,下图中是列出范例图片里 Root 中所有的 Subview。

  1. //取的UIView下的所有Subview   
  2. [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;









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值