当前位置: 首页 > news >正文

开发帮官方网站/营销推广计划怎么写

开发帮官方网站,营销推广计划怎么写,上海网站推荐,51电子网动画: 复杂动画的实现:首先要拆分,明确你自己要实现的效果是什么,然后开始拆分,第一步实现什么,然后实现什么...,怎么样链接起来。把复杂的动画拆分成一个个小步骤,然后一步步实现就…

动画: 复杂动画的实现:首先要拆分,明确你自己要实现的效果是什么,然后开始拆分,第一步实现什么,然后实现什么...,怎么样链接起来。把复杂的动画拆分成一个个小步骤,然后一步步实现就可以了。

snapshotViewAfterScreenUpdates(_:) 这个方法我在做拖拽tableView的item的时候(eg: SystemPreference)看到的,感觉用来做动画很好用。相当于截个图,然后拿着这个截图,实现各种动画效果。 eg:

  1. 如果你是一个电商项目,将商品加入购物车,这个动画就可以用这个来实现(Ps:我记得京东还是淘宝久有这个效果,但是我却又找不到了),点击加入购物车,然后对商品生成一个快照,然后缩小移动到购物车(还可以加入旋转的动画),到购物车的位置,移除。Perfect!
  2. 我做的这个项目,读信的过程就是用这个效果实现,点击信封,然后生成快照,然后快照位移到屏幕中间,消失,然后信封详情出现。

实现

首先,定义动画效果的实现:

  1. 查看信件:a. 点击信件,然后生成信件快照; b.信件快照位移到屏幕中央;同时信件详情出现,信件快照消失;
  2. 关闭详情:a. 点击空白处,生成信件详情快照和信件快照;信件快照起始状态隐藏;b.信件详情快照慢慢变小到和信件快照同样大小;然后消失,信件快照显示;c:信件快照位移到信件的位置,然后消失;

代码

/**
 *  @brief 返回对应view的snapshot
 *
 *  @param inputView 输入的view
 *
 *  @return 返回的snapshot
 */
- (UIView *)customSnapshotFromView:(UIView *)inputView {
    UIView *snapshot = [inputView snapshotViewAfterScreenUpdates:YES];
    snapshot.layer.masksToBounds = YES;
    snapshot.layer.cornerRadius = 0.0;
    snapshot.layer.shadowOffset = CGSizeMake(-5.0, 0.0);
    snapshot.layer.shadowRadius = 5.0;
    snapshot.layer.shadowOpacity = 0.4;
    return snapshot;
}```

> 关闭详情

```Objective-C

/**
 *  动画 关闭详情
 *
 *  @param sourceView      起始位置的view
 *  @param destinationView 终点位置的view
 *  @param animateFinished 动画结束的回调
 */
- (void)animateView:(UIView *)sourceView
             toView:(UIView *)destinationView
           finished:(AnimateFinished)animatedFinished
{
    /**
     *  逻辑:1. 得到两个view的snapshot, sourcesnapshot/destinationsnapshot
     *       2. 然后,设置destinationsnapshot的中心为整个view的中心,设置为透明(即不显示)
     *       3. 隐藏当前sourceView,第一个动画实现,sourceViewsnapshot大小变为destinationsnapshot的大小,然后隐藏,同时显示destinationsnapshot
     *       4. 第二个动画实现:destinationsnapshot移动回对应位置,然后隐藏
     */
    
    // 1
    UIView *sourceSnapshot = [self customSnapshotFromView:sourceView];
    UIView *destinationSnapshot = [self customSnapshotFromView:destinationView];
    
    // 2
    CGPoint viewCenter = self.view.center;
    CGPoint destinationCenter = destinationView.center;
    destinationSnapshot.center = viewCenter;
    destinationSnapshot.alpha = 1.0;
    [self.view addSubview:sourceSnapshot];
    [self.view addSubview:destinationSnapshot];
    
    // 3
    sourceView.hidden = YES;
    [UIView animateWithDuration:0.5
                     animations:^{
                         sourceSnapshot.transform = CGAffineTransformMakeScale(1.05, 1.05);
                         sourceSnapshot.alpha = 0.98;
                         sourceSnapshot.frame = destinationSnapshot.frame;
                     } completion:^(BOOL finished) {
                         
                         self.alphaView.hidden = YES;
                         destinationSnapshot.alpha = 0.98;
                         [sourceSnapshot removeFromSuperview];
                         
                         // 4
                         [UIView animateWithDuration:0.5
                                          animations:^{
                                              destinationSnapshot.center = destinationCenter;
                                              destinationSnapshot.transform = CGAffineTransformIdentity;
                                          } completion:^(BOOL finished) {
                                              [destinationSnapshot removeFromSuperview];
                                              animatedFinished();
                                          }];
                     }];
    
}```

> 查看详情

```Objective-C

/**
 *  动画 查看详情
 *
 *  @param viewToshow      要展示的view
 *  @param currentView     起始的view
 *  @param animateFinished 动画结束的回调
 */
- (void)showView:(UIView *)viewToshow
        withView:(UIView *)currentView
        finished:(Finished)animateFinished
{
    // Taking a snapshot of the selected row using helper method
    UIView *snapShot = [self customSnapshotFromView:currentView];
    
    // Add the snapshot as a subview, centered cell's center
    CGPoint viewCenter = self.view.window.center;
    CGPoint cellCenter = currentView.center;
    snapShot.center = cellCenter;
    snapShot.alpha = 0.0;
    snapShot.backgroundColor = [UIColor whiteColor];
    
    [self.view addSubview:snapShot];
    [UIView animateWithDuration:0.5 animations:^{
        snapShot.transform = CGAffineTransformMakeScale(1.05, 1.05);
        snapShot.alpha = 0.98;
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:0.5 animations:^{
            snapShot.center = viewCenter;
            snapShot.transform = CGAffineTransformIdentity;
        } completion:^(BOOL finished) {
            self.alphaView.hidden = NO;
            viewToshow.hidden = NO;
            [snapShot removeFromSuperview];
            animateFinished();
        }];
    }];
}```

> Ps: 也许会好奇,为什么查看和关闭会是两个不同的部分?可以再回头查看一下分割的动画,发现过程其实是不一样的,查看详情比关闭少了一个步骤。
代码:[AnimateSnapshotView](https://github.com/mokong/AnimateSnapShotView)
复制代码

转载于:https://juejin.im/post/5a31da4d51882506fd588e4e

http://www.lbrq.cn/news/1557613.html

相关文章:

  • 深圳龙华新区住房和建设局网站/营销推广活动策划
  • 乌鲁木齐企业网站建设/上海整站seo
  • 怎么做百度搜到的网站免费的/可以发外链的平台
  • 连锁酒店网站建设公司/国内seo做最好的公司
  • 大连网站建设1000元/公关
  • 网页设计专业设计课程/百度优化软件
  • 如何做一个个人网站/网站推广策划书范文
  • 南通企业网站/企业网站有哪些平台
  • 什么东西可以做网站/网络营销文案策划都有哪些
  • 公司注册查重名/百度网站优化公司
  • 国企门户网站建设方案/广州网站运营专注乐云seo
  • wordpress需要调用缩略图/北京seo公司助力网络营销
  • 九龙坡网站建设哪家好/在线培训网站
  • 大门户wordpress主题门户新闻/seo搜索引擎优化策略
  • 域名及对应网站/成都官网seo服务
  • 做一个网站只做前端怎么做/百度竞价推广是什么意思
  • 苹果电脑如何做网站/网站制作公司排名
  • 做结构图用什么网站/长春网络优化最好的公司
  • 怎么做单页网站导航/怎么开发自己的小程序
  • yy直播是干什么的/在线网站seo诊断
  • WordPress适合做多大级别的网站/搜索广告是什么
  • 泗阳做网站/电商网络营销
  • 深圳地产网站制作公司/矿坛器材友情交换
  • 电子商务网站建设规模计划/网络营销运营方案
  • 为外国人做非法网站/二级网站怎么做
  • 如何用2级域名做网站/网站排名首页前三位
  • 北京建设有限公司信源官方网站/seo常用优化技巧
  • 做网站快速排名/电脑系统优化软件排行榜
  • 专业做网站的公司有哪些/信息检索关键词提取方法
  • 网站建设公司联系电话/万网app下载
  • Bee1.17.25更新Bug,完善功能.不支持NOSQL,分库分表Sharding(2.X版有)
  • 【R语言】R 语言中打印含有双引号的字符串时会出现 “\” 的原因解析
  • LangChain 多任务应用开发
  • C#WPF实战出真汁13--【营业查询】
  • Docker+飞算JavaAI=未来:全流程容器化AI开发实战
  • 【Html网页模板】赛博朋克数据分析大屏网页