iOS:UIView的block函数实现转场动画---单视图
2024-08-21 18:43:59
使用UIView动画函数实现转场动画——单视图
+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;
参数说明:
–duration:动画的持续时间
–view:需要进行转场动画的视图
–options:转场动画的类型
–animations:将改变视图属性的代码放在这个block中
–completion:动画结束后,会自动调用这个block
具体实例如下:
实现功能:还是往工程中导入5张图片素材,创建图像视图控件,然后通过向左或向右扫动手势实现图像视图中图片的轮换,即实现转场动画。
代码如下:
//导入图片素材
//声明属性
#import "ViewController.h" @interface ViewController ()
@property (strong,nonatomic)UIImageView *imageView;//图像视图
@property (assign,nonatomic)NSInteger index; //当前图片的索引
@end
//初始化,创建图像视图控件并设置图片,同时创建扫动手势,添加扫动事件
- (void)viewDidLoad {
[super viewDidLoad]; //设置当前图片为第一张
self.index = 1; //初始化图像视图
self.imageView = [[UIImageView alloc]initWithFrame:self.view.frame];
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
[self.imageView setImage:[UIImage imageNamed:[NSString stringWithFormat:@"s%ld.jpg",self.index]]]; //允许图像视图进行用户交互
self.imageView.userInteractionEnabled = YES;
[self.view addSubview:self.imageView]; //创建扫动手势
UISwipeGestureRecognizer *leftswipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipe:)];
//设置扫动方向为向左扫
leftswipe.direction = UISwipeGestureRecognizerDirectionLeft;
//添加扫动手势
[self.imageView addGestureRecognizer:leftswipe]; //创建扫动手势
UISwipeGestureRecognizer *rightswipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipe:)];
//设置扫动方向为向右扫
rightswipe.direction = UISwipeGestureRecognizerDirectionRight;
//添加扫动手势
[self.imageView addGestureRecognizer:rightswipe];
}
//处理扫动手势事件,进行转场动画的创建并执行动画
#pragma mark -扫动手势
-(void)swipe:(UISwipeGestureRecognizer *)sender
{
//根据手势的方向改变图片的索引,一共5张图片
if (sender.direction == UISwipeGestureRecognizerDirectionLeft)//向左扫
{
if (self.index > )
{
self.index--;
}
else
{
self.index = ;
}
}
else //向右扫
{
if (self.index <)
{
self.index++;
}
else
{
self.index = ;
}
}
//使用block函数添加UIView单视图转场动画
[UIView animateWithDuration:1.0f animations:^{
[self.imageView setImage:[UIImage imageNamed:[NSString stringWithFormat:@"s%ld.jpg",self.index]]];
} completion:nil];
}
演示结果如下:
没扫动手势一次,图片就轮换一次,即转场显示的图片依次为:
最新文章
- Linux搭建Nginx
- 字典NSDictionary以及NSMutableDictionary的用法总结
- “北航Clubs”功能规格说明书
- jquery显示隐藏toggle
- [shell基础]——I/O重定向
- 获取枚举Description的Name
- (1) 一个字符串,根据输入参数m,找出字符串的m个字符的所有字符串
- 【转】Android中自动连接到指定SSID的Wi-Fi
- [问题解决]linux sudo xxx:command not found
- ARM开发板链接shell
- Linux 中Ctrl + s 的作用
- Source Code Review
- Random-Forest-Python
- PhoneGap和Cordova应该用哪一个?
- C++ Opencv 自写函数实现膨胀腐蚀处理
- fabric 更详尽的用法
- 可以用到的XSS跨站语句
- Eclipse中git上如何把自己的分支保存到远端
- AngularJS订阅API服务
- Asp.net2.0之自定义控件ImageButton
热门文章
- “我爱淘”第二冲刺阶段Scrum站立会议2
- Web前端技能
- ios应运程序的五种状态
- ueditor:原谅我这一生不羁放纵爱独特
- win8.1 cygwin编译java轻量虚拟机avian
- Unity的物理引擎是如何实现碰撞的呢?
- 前端之JavaScript第四天学习(10)-JavaScript-运算符
- Portion of class Throwable’s inheritance hierarchy
- HDU 5593 ZYB&#39;s Tree 树形dp
- frequentism-and-bayesianism-chs-iv