首页 > 其他分享 >ios开发之--简单动画效果的添加

ios开发之--简单动画效果的添加

时间:2023-08-22 15:34:14浏览次数:33  
标签:动画 效果 -- 代码 ios 简单 NSMutableArray btnArray

记录一个简单的动画效果,自己写的,很简单,仅做记录。

附一个demo的下载地址:

https://github.com/hgl753951/hglTest.git

代码如下:

1,准备

BOOL _isOpen;
    NSMutableArray * _btnArray;

2,具体代码

-(void)initUI
{
    _btnArray = [[NSMutableArray alloc]init];
    for (int i=0; i<4; i++)
    {
        UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
        btn.tag = i;
        btn.frame = CGRectMake(260, 420, 40, 40);
        [btn setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"c_setting%d",(i+1)%4]] forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:btn];
        [_btnArray addObject:btn];
        
    }
}

-(void)btnClick:(UIButton *)btn
{
    //如果没有打开
    if (!_isOpen)
    {
        //打开九宫格
        for (int i = 0; i < _btnArray.count; i++)
        {
            UIButton * myBtn = [_btnArray objectAtIndex:i];
            [UIView animateWithDuration:0.3
                             animations:^{
                                 myBtn.frame = CGRectMake(190+(i%2)*70, 350+70*(i/2), 40, 40);
                             }
                             completion:^(BOOL finished) {
                                 [UIView animateWithDuration:0.3
                                                  animations:^{
                                                      myBtn.frame = CGRectMake(200+(i%2)*60, 360+(i/2)*60, 40, 40);
                                                  }];
                             }];
        }
        
    }
    else
    {
        //关闭九宫格
        for (int i = 0; i < _btnArray.count; i++)
        {
            UIButton * myBtn = [_btnArray objectAtIndex:i];
            [UIView animateWithDuration:0.3
                             animations:^{
                                 myBtn.frame = CGRectMake(190+(i%2)*70, 350+70*(i/2), 40, 40);
                             }
                             completion:^(BOOL finished) {
                                 [UIView animateWithDuration:0.3
                                                  animations:^{
                                                      myBtn.frame = CGRectMake(260, 420, 40, 40);
                                                      
                                                  }];
                             }];
        }
        
        
    }
    _isOpen = !_isOpen;
}

效果如下:

ios开发之--简单动画效果的添加_hg

 

作者:稻草人11223

标签:动画,效果,--,代码,ios,简单,NSMutableArray,btnArray
From: https://blog.51cto.com/u_13188203/7190261

相关文章

  • 红包看广告赚钱app开发源码
      经常玩手机的人都看到过,手机app软件上都有开屏的广告,这种广告是收费的。也是软件平台盈利的一种模式,为了让用户实现更大化的盈利,平台商可以把软件上的收费模式增加更多。因为有市场才会出现这么多人进来参与这个项目,本文就以看广告开红包赚钱的app为例,看看这款app软件的模式......
  • 生信:一起读官方文档 featureCounts 篇
    一起读官方文档featureCounts篇featureCounts介绍用于为高通量测序数据(例如RNA-seq、ChIP-seq、ATAC-seq等)计数读取(reads)与注释特征(例如基因、转录本)的重叠。它是Subread软件包的一部分,特别适用于RNA-seq数据的基因表达量分析。快速使用featureCounts\-a../genome/......
  • ios开发之--UIViewContentMode详解
    在开发当中有时会有这样的需求,将从服务器端下载下来的图片添加到imageView当中展示,但是下载下来的图片尺寸大小不固定,宽高也有可能不成比例如果直接设置imageView的image属性而不设置contentMode那么图片会默认填满整个容器,导致图片变形,影响美观.直接设置1个正方形的imageVi......
  • elasticsearch
    最典型的是两个应用场景:全文检索 和 复杂查询。正排索引,也叫正向索引(ForwardIndex),是通过文档ID去查找关键词(文档内容)。倒排索引,也叫反向索引(InvertedIndex),是通过关键词查找文档ID。must:其查询子句必须全部被满足,逻辑相当于and,并且会计算分数。filter:与must作用一......
  • ios开发之 -- 自动轮播图创建
    这里是oc版本的,简单记录下:具体代码如下:1,准备#defineFRAME[[UIScreenmainScreen]bounds]#defineWIDTHFRAME.size.width#defineHEIGHTFRAME.size.height2,具体实现//scrollview的添加_bigScrollView=[[UIScrollViewalloc]initWithFrame:CGRectMake(0,20,WIDTH,H......
  • 如何查看Navicat已有连接的密码(简单清晰)
    1.打开Navicat,File>ExportConnections2.选择你想查看的数据库,并勾选下方的【导出密码】,导出3.去文件里找到Password 4.打开网址 https://tool.lu/coderunner复制下面的代码放进去,然后把倒数第二行换成上面复制的密码<?phpnamespaceFatSmallTools;classNavi......
  • swift--使用UserDefaults来进行本地数据存储
    UserDefaults适合轻量级的本地客户端存储,存储一个值,新值可以覆盖旧值,可以重复存储,也可以存储一次,然后直接从UserDefaults里面读取上次存储的信息,很方便,用的时候,宏定义下,直接调用!轻量级数据库的话,移动端一般使用SQlite数据库,也是一款轻量级的适合移动端设备的数据库,具体可以参考我以......
  • C++ 面向对象开发1
    ObjectBased:面对的是单一class的设计;ObjectOriented:面对的是多重classes的设计,classes和classes之间的关系。class前向声明,声明,定义。函数若在classbody中定义完成,便自动成为inline函数。如果函数太复杂就不会成为inline。overload的函数编译之后签名不同。虽然参数列表不......
  • swift开发之 -- 自动轮播图(UIScrollView+UIPageControl+Timer)
    比较简单,原理就不说了,这里只做记录:代码如下:1,准备varpageControl:UIPageControl?varmyscrollView:UIScrollView?varmyTimer:Timer?varmycurrentPage:NSInteger?varcourses=[["name":"first","pic":"1.jpeg&qu......
  • ios开发之 -- NSData 和 NSString , UIImage 等之间的互转
    1//NSData转换为UIImage2NSData*imageData=[NSDatadataWithContentsOfFile:imagePath];3UIImage*image=[UIImageimageWithData:imageData];45//UIImage转换为NSData6NSData*imageData=UIImagePNGRepresentation(aimae);1.......