[self.view insertSubview:girlView belowSubview:bottomView];//把girlView插入到bottomView后面
[self.view insertSubview:girlView aboveSubview:bottomView];//把girlView插入到bottomView前面
[self.view insertSubview:girlView atIndex:0];//把girlView插入到0层
[self.view bringSubviewToFront:girlView];//把girlView移到最前
[self.view sendSubviewToBack:girlView];//把girlView移到最后
如果想调用某个类的某个方法可以写成这样,这个方法来自NSObject类
实际调用
有三个方法分别是
循环一个视图下面所有视图的方法
循环返回一个APPLICATION里面所有的VIEW
找出所有的父视图
UIView提供了大量管理视图的方法
视图回调
给UIView设置标记和检索视图
视图的几何特征
仿射变换
如想复原
直接设置视图的中心
中心
定时器
定义视图边界
仿射变换补充
//创建CGAffineTransform
建立UIView动画块
//首先建立CGContextRef
视图翻转
使用QuartzCore做动画
animation.type还可以用以下的赋值
上面这个是转自这里的http://2015.iteye.com/blog/1122130
休眠一下
一个简单的通过图片做的动画
UIView 3D 旋转
//围绕y轴旋转PI,即镜面效果
view.layer.transform = CATransform3DConcat(view.layer.transform, CATransform3DMakeRotation(M_PI,0.0,1.0,0.0));
一些例子:
//使view围绕view的左下角这个点旋转90度
UIView *view = [self.view viewWithTag:100];//获取一个view
CGAffineTransform transform = CGAffineTransformMakeRotation(-M_PI*0.5);//逆时针为负数,正则是顺时针
CGRect frame = view.frame;
view.layer.anchorPoint =CGPointMake(0,1);//设置旋转的中心点(锚点)
view.frame = frame;//设置anchorPont会使view的frame改变。重新赋值。
//一个2秒的动画,实现旋转。
[UIView beginAnimations:nilcontext:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:2.0f];
view.transform = transform;
[UIView commitAnimations];
*****************
view.transform = CGAffineTransformMakeScale(0.5,0.5);//缩放50%
view.transform = CGAffineTransformIdentity;//还原
翻书效果:
1、
CGRect frame = view.frame;
view.layer.anchorPoint = CGPointMake(1.0f, 0.5f);
view.frame = frame;
[UIView beginAnimations:nilcontext:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:2.0f];
view.layer.transform = CATransform3DMakeRotation(M_PI*0.5, 0.0, 1.0, 0);
[UIView commitAnimations];
2、
CGRect frame = view.frame;
view.layer.anchorPoint = CGPointMake(1.0f, 0.5f);
view.frame = frame;
view.layer.position = CGPointMake(view.layer.position.x + view.bounds.size.width/2.0f, view.layer.position.y);
CABasicAnimation *animation = [CABasicAnimationanimationWithKeyPath:@"transform"];
animation.duration = 2.0f;
animation.timingFunction = [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];
CATransform3D tfm = CATransform3DMakeRotation(M_PI/2.0f, 0.0f, 1.0f, 0.0f);
tfm.m34 = 0.001f;
tfm.m14 = -0.0015f;
animation.fromValue = [NSValuevalueWithCATransform3D:CATransform3DIdentity];
animation.toValue = [NSValue valueWithCATransform3D:tfm];
[view.layer addAnimation:animation forKey:@"flipUp"];
两种效果一样。
动画的各种几何特性,大都可以通过此方法设定:
[myLayer setValue:[NSNumber numberWithInt:0] forKeyPath:@"transform.rotation.x"];
从官方的API上的解释,可以看出 hitTest方法中,要先调用PointInside:withEvent:,看是否要遍历子视图。如果我们不想让某个视图响应事件,只需要重载PointInside:withEvent:方法,让此方法返回NO就行了。