iOS视图弹出、平移、旋转、翻转、剪切等变换效果实现
效果图:

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视图弹出、平移、旋转、翻转、剪切等变换效果实现的更多相关文章
- iOS:弹出窗控制器:UIPopoverController
弹出窗控制器:UIPopoverController 截图: 实质:就是将内容控制器包装成popoverController的形式,然后在模态出来,必须给定指向目标(target.frame). ...
- h5页面ios键盘弹出收起后页面底部留白问题
<input placeholder="验证码" type="tel" v-model="verify" maxlength=&quo ...
- iOS模态弹出半透明视图控制器
项目中需要实现点击按钮出现的视图全屏覆盖,呈半透明状态可以看到下面的视图? 解决方案: 绕了很多弯路原来可以使用模态弹出一个视图控制器 在iOS8之后只需要设置一个最新的属性 SecondViewCo ...
- iOS:键盘弹出和收起的通知使用
介绍:不论是UITextField,还是UITextView,使用它们输入文字时都是有键盘的弹出,此时可能会挡住我们创建的一分部其他视图,此时,就需要根据键盘的高度将我们被隐藏的部分View做向上或者 ...
- iOS 键盘弹出遮挡输入框
#pragma mark 键盘弹出遮挡输入框 //开始编辑输入框的时候,软键盘出现,执行此事件 -(void)textFieldDidBeginEditing:(UITextField *)textF ...
- Modal视图弹出方式
Modal方式弹出页面: 1.Modal方式弹出页面在iOS中有很广泛的应用,比如UIImagePickerController等,Modal方式主要有以下几个作用: 检查登陆信息,Modal出登陆页 ...
- 基于layer封装的异步加载分部视图弹出层
背景:之前一直用的artdialog,但是样式不是很好看,后来偶然看到layer,觉得不错,但是对于.net mvc来说,不能像artdialog一样弹出分部视图是很难受的.所以下面的方法就解决了. ...
- ios手机弹出层上表单的操作,收起键盘焦点错乱的问题
今天遇到了ios手机下 弹出层上form表单 当收起键盘后,焦点错乱,无法再操作的问题 解决办法 function device() { const u = navigator.userAgent; ...
- 弹出视图/弹出模态presentViewController与presentModalViewController
一.主要用途 弹出模态ViewController是IOS变成中很有用的一个技术,UIKit提供的一些专门用于模态显示的ViewController,如UIImagePickerController等 ...
随机推荐
- Javascript常用正则表达式汇总
一.匹配数字和字符串 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数 字:"^\d{n}$&qu ...
- PHP中json_encode后中文乱码的解决方案
<?php header("Content-Type:text/html;charset=utf-8;"); $arr = array ('Version_code'=> ...
- 12306火车票查询--python
最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都详细给分享出来.(注意使用的是python3) 首先我将最终结果给展示出来: 在cmd命令行执行:py ...
- 【NopCommerce源码架构学习-一】--初识高性能的开源商城系统cms
很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从中学习很多企业系统.软件开发的规范和一些新的技术.技巧,可以快速地提高我们 ...
- 基于CkEditor实现.net在线开发之路(5)列表页面开发
这章主要讲解利用控件开发列表页面,我们先从最简单的列表页面开始讲解,这个列表只有一个列表展示.具体开发步骤请看下面动态图 由上动态图可以看出,开发一个简单的列表只有两步, 第一步:拖拽查询控件,设置好 ...
- 从零开始学 Java - Spring MVC 统一异常处理
看到 Exception 这个单词都心慌 如果有一天你发现好久没有看到Exception这个单词了,那你会不会想念她?我是不会的.她如女孩一样的令人心动又心慌,又或者你已经练功到了孤独求败,等了半辈子 ...
- IT基础架构规划方案之实际网络设计案例
根据某集团总部新办公大楼.厂房和分支机构(店面)的情况,以及IT部门对网络节点数.网络应用和分支机构(店面)的初步规划,对企业的总体网络拓扑结构进行设计,如下图. 设备选型和部署参考: 类型 设备选型 ...
- 深入理解http/https协议
深入理解HTTP协议(转) http协议学习系列 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(Wo ...
- 12、ASP.NET MVC入门到精通——HtmlHelper
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 HtmlHelper:是为了方便View的开发而产生 HtmlHelper的演变 普通首页超级链接为:<a href="/h ...
- [转]看部电影,透透彻彻理解IoC(你没有理由再迷惑!)
之前对依赖注入的概念一直感到模糊,直到看了这篇文章:http://www.iteye.com/topic/1122835 引述: IoC(控制反转:Inverse of Control)是Spring ...