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等 ...
随机推荐
- Solr与Cassandra二级缓存实践
额达到数十亿美元.在Newegg,每天有数以千万计的用户浏览商品,并产生下单交易等后续操作.我们构建的数据系统,必须应对日益增大的数据量,具备健壮性.可靠性.目前,我们采用Cassandra来构建Ne ...
- JAVA安全模型
作为一种诞生于互联网兴起时代的语言,Java 从一开始就带有安全上的考虑,如何保证通过互联网下载到本地的 Java 程序是安全的,如何对 Java 程序访问本地资源权限进行有限授权,这些安全角度的考虑 ...
- 查看.NET Core源代码通过Autofac实现依赖注入到Controller属性
一.前言 在之前的文章[ASP.NET Core 整合Autofac和Castle实现自动AOP拦截]中,我们讲过除了ASP.NETCore自带的IOC容器外,如何使用Autofac来接管IServi ...
- 重构sql server的sys.sp_helptext存储
本文目录列表: 1.sys.sp_helptext存储的功能和效果 2.重构sys.sp_helptext存储(命名为dbo.usp_helptext)提供直观的效果 3.sys.sp_helptex ...
- WCF 数据数据 DataTable
一般在WCf数据大数据是 List集合 或者 Json. public DataTable GetProperitybyModelCode(string modelCode) { using (var ...
- jQuery省市区三级联动插件
体验效果:http://hovertree.com/texiao/bootstrap/4/支持PC和手机移动端. 手机扫描二维码体验效果: 代码如下: <!DOCTYPE html> &l ...
- 微信JSApi支付~微信支付代理模式的实现(原创)
返回目录 起因(大叔原创) 对于微信支付来说,你的发起者需要配置对应的域名来获取code(获取用户信息接口),而这意味着,你的多个项目(域名不同)不能同时使用一个公众号,这是一件很操蛋的事,对于我们开 ...
- form表单中enctype="multipart/form-data"的作用
在我们使用php导入和导出excel表格的时候经常会见到 enctype="multipart/form-data",哪他的作用是什么呢? ENCTYPE="multip ...
- luogg_java学习_08_设计模式_API
这篇博客总结了1天整,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 , 设计模式 在长期开发过程中,为了解决某些固定问题, 总结出的 ...
- 【Nginx 大系】Nginx服务器面面观
Nginx官方文档中文版 1. 先看看百度百科对Nginx 的解释: nginx_百度百科 2. 下面的博客就是讲 Nginx的安装方法和 具体的配置文件的使用介绍的很详细,可以仔细阅读下 [好]Ng ...