效果图:

1、定义属性

@property (nonatomic, strong) UIView        *transformView;//发生变换的试图

@property (nonatomic, strong) UIView        *backGroundView;//发生变换试图的父试图

@property (nonatomic, strong) UITableView   *titleTableView;

@property (nonatomic, strong) NSArray       *dataSourceAry;//数据源数组

  

2、实现代码

-(void)poppingViewWithTransform:(NSString *)transformStr{

    [self.view addSubview:self.backGroundView];

    self.transformView.frame = CGRectMake(SCWidth/2-100, 200, 200, 200);

    if ([transformStr isEqualToString:@"缩放变换"]) {
//很简单的变换效果,200,为Y轴从下往上平移,相反-200 是从上往下平移
self.transformView.transform = CGAffineTransformMakeScale(0.0, 0.0);
[UIView animateWithDuration:0.5 animations:^{
self.transformView.transform = CGAffineTransformMakeScale(1.0, 1.0); }]; }else if([transformStr isEqualToString:@"平移变换"]){
//很简单的变换效果,200,为Y轴从下往上平移,相反-200 是从上往下平移,X轴变换同理
self.transformView.transform = CGAffineTransformMakeTranslation(0, -200);
[UIView animateWithDuration:0.5 animations:^{
self.transformView.transform = CGAffineTransformMakeTranslation(0,0);
}];
}else if([transformStr isEqualToString:@"翻转变换"]){
//下面注释的代码,最后Z轴改成一个数字,例12,可以实现旋转变换
//self.transformView.layer.transform = CATransform3DMakeRotation(12, 1, 1, 0);
self.transformView.layer.transform = [self firstStep]; [UIView animateWithDuration:0.5 animations:^{
self.transformView.layer.transform = CATransform3DMakeRotation(0, 1, 0, 0);
}];
}else if([transformStr isEqualToString:@"旋转变换"]){
//具体效果可以更改 M_PI_4 角度来实现
self.transformView.transform = CGAffineTransformMake(( cos(M_PI_4) ), ( sin(M_PI_4) ), -( sin(M_PI_4) ), (cos(M_PI_4) ), 0, 0);
[UIView animateWithDuration:0.5 animations:^{
self.transformView.transform = CGAffineTransformMake(( cos(M_PI) ), ( sin(M_PI) ), -( sin(M_PI) ), (cos(M_PI) ), 0, 0);
}];
}else if([transformStr isEqualToString:@"剪切变换"]){
//使用仿射基础方法CGAffineTransformMake,设置x和y都为0.5的斜切
//可以试着把第一个1换成0.5,看看效果
//可以试着把第二个1换成0.5,看看效果
self.transformView.transform = CGAffineTransformMake(1,0.5,0.5,1,0,0);
[UIView animateWithDuration:0.5 animations:^{
self.transformView.transform = CGAffineTransformMake(1,0,0,1,0,0);
}];
} self.transformView.layer.cornerRadius = 7;
self.transformView.layer.masksToBounds = YES;
[self.backGroundView addSubview:self.transformView];
」

  

其中,翻转变化用到这个:

-(CATransform3D)firstStep{
//让transform1为单位矩阵
CATransform3D transform1 = CATransform3DIdentity;
//z轴纵深的3D效果和CATransform3DRotate配合使用才能看出效果
//m34很重要
transform1.m34 = 1.0/-100;
//x和y都缩小为原来的0.9,z不变
transform1 = CATransform3DScale(transform1, 0.9, 0.9, 1);
//绕x轴向内旋转15度
transform1 = CATransform3DRotate(transform1,15.0f * M_PI/180.0f, 1, 0, 0);
return transform1;
}

  

iOS视图弹出、平移、旋转、翻转、剪切等变换效果实现的更多相关文章

  1. iOS:弹出窗控制器:UIPopoverController

    弹出窗控制器:UIPopoverController 截图:   实质:就是将内容控制器包装成popoverController的形式,然后在模态出来,必须给定指向目标(target.frame). ...

  2. h5页面ios键盘弹出收起后页面底部留白问题

    <input placeholder="验证码" type="tel" v-model="verify" maxlength=&quo ...

  3. iOS模态弹出半透明视图控制器

    项目中需要实现点击按钮出现的视图全屏覆盖,呈半透明状态可以看到下面的视图? 解决方案: 绕了很多弯路原来可以使用模态弹出一个视图控制器 在iOS8之后只需要设置一个最新的属性 SecondViewCo ...

  4. iOS:键盘弹出和收起的通知使用

    介绍:不论是UITextField,还是UITextView,使用它们输入文字时都是有键盘的弹出,此时可能会挡住我们创建的一分部其他视图,此时,就需要根据键盘的高度将我们被隐藏的部分View做向上或者 ...

  5. iOS 键盘弹出遮挡输入框

    #pragma mark 键盘弹出遮挡输入框 //开始编辑输入框的时候,软键盘出现,执行此事件 -(void)textFieldDidBeginEditing:(UITextField *)textF ...

  6. Modal视图弹出方式

    Modal方式弹出页面: 1.Modal方式弹出页面在iOS中有很广泛的应用,比如UIImagePickerController等,Modal方式主要有以下几个作用: 检查登陆信息,Modal出登陆页 ...

  7. 基于layer封装的异步加载分部视图弹出层

    背景:之前一直用的artdialog,但是样式不是很好看,后来偶然看到layer,觉得不错,但是对于.net mvc来说,不能像artdialog一样弹出分部视图是很难受的.所以下面的方法就解决了. ...

  8. ios手机弹出层上表单的操作,收起键盘焦点错乱的问题

    今天遇到了ios手机下 弹出层上form表单 当收起键盘后,焦点错乱,无法再操作的问题 解决办法 function device() { const u = navigator.userAgent; ...

  9. 弹出视图/弹出模态presentViewController与presentModalViewController

    一.主要用途 弹出模态ViewController是IOS变成中很有用的一个技术,UIKit提供的一些专门用于模态显示的ViewController,如UIImagePickerController等 ...

随机推荐

  1. 使用webstom或者idea上传代码到github或coding

    鉴于github网络速度太慢,建议用coding.先介绍github上传方式,因为webstom或idea集成了github,方法简单. git是一个版本控制器,他的作用是管理代码.比如你修改了代码, ...

  2. js赋值运算的理解

    简介 js引擎由于为了效率,很多时候的非直接量赋值都不是copy一份在赋值给新的变量,而是一个引用 ps:直接量:直接值数字字符串等 为什么使用len = doms.length; 里的len效率要比 ...

  3. GridView的使用

    首先,gridview是封装好的,直接在设计界面使用,基本不需要写代码: 一.绑定数据源 GridView最好与LinQDatasourse配合使用,相匹配绑定数据: 二.样式控制 1.自动套用样式 ...

  4. 基于Metronic的Bootstrap开发框架经验总结(11)--页面菜单的几种呈现方式

    在常规的后台管理系统或者前端界面中,一般都有一个导航菜单提供给用户,方便选择所需的内容.基于Metronic的Bootstrap开发框架,是整合了Metroinc样式,以及Boostrap组件模块的内 ...

  5. 用c#开发的一款webservice调用小工具,方便测试

    本人经常与webservice打交道,webservice调用工具有soap ui,使用起来不是那么方便,所以我花了很长时间特意写了个小工具来调用Webservice方便测试,还有待进一步完善.使用方 ...

  6. HTML5火焰文字特效DEMO演示

    效果展示:http://hovertree.com/texiao/html5/26/ 效果图: 扫描二维码查看效果:

  7. 18 行 JS 代码编一个倒时器

    有时候在生活中,你需要一个JavaScript倒计时时钟,而不是一个末日装置设备.不管你是否有一次约会,销售.促销.或者游戏,你可以受益于使用原生JavaScript构建一个时钟,而不是拿到一个现成的 ...

  8. JavaScript中数组去除重复

    方式一:常规模式 1.构建一个新的临时数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与临时数组对比 3.若临时数组中没有该元素,则存到临时数组中 //方式一: Array.p ...

  9. iOS开发---有用的网址(持续更新)

    http://ios.jobbole.com/88403/     iOS开发之OCR光学识别储蓄卡以及信用卡 http://ios.jobbole.com/87649/      iOS中常用的第三 ...

  10. [转]实现文字跑马灯效果,scrolling text from right to left

    <div> <marquee direction="left" behavior="scroll" scrollamount="10 ...