问一下,iOS的动画策略? 有界面加载,有上拉加载,怎么作区分?

问一下,iOS的动画策略?
有界面第一次加载,界面中间出现动画。
有上拉加载,界面下方出现动画。
一个界面的网络请求方法,应该是写在一个地方?
想了解 最佳实践。
动画都出现的原始代码如下:

[ZheProgressHUD showOnView: self.view ];// 界面中间开始转菊花
    __weak typeof(self) weakSelf = self;
    // 开始 网络请求
    [GetNetWorkDataMethod getDataWithParameters: parametersDiscover requestType:ZheNetworkingRequestTypeGet andWithURLStr: kArticleList userInfo: nil success:^(NSURLSessionDataTask *task, NSDictionary *responseObject, NSDictionary *userInfo) {
        
        NSDictionary * dictionaryArtList = responseObject;
        NSArray * artiLists = dictionaryArtList[@"Results"];
        for (NSDictionary * dictionTemp in artiLists){
            TagArticleListResultModel * listResultModel = [[TagArticleListResultModel alloc ] init ];
            [listResultModel setValuesForKeysWithDictionary: dictionTemp ];
            [self.articArray addObject: listResultModel ];
        }
        dispatch_async(dispatch_get_main_queue(), ^{
            [weakSelf.artiListTableView reloadData ];
            [weakSelf.artiListTableView.mj_header endRefreshing ];//上面的菊花消失
            [weakSelf.artiListTableView.mj_footer endRefreshing ];//下面的菊花消失
            weakSelf.artiListTableView.mj_header.hidden = NO;
            weakSelf.artiListTableView.mj_footer.hidden = NO;
            [ZheProgressHUD hideAfterSuccessOnView: self.view];// 界面中间菊花消失
        });
        
        
    } exception:^(NSDictionary *responseObject, NSDictionary *userInfo) {} failure:^(NSError *error, NSDictionary *userInfo) {
        [ZheProgressHUD hideAfterFailOnView: self.view ];//界面中间菊花消失
        
    }];
    

我自己的视线,就是引入变量,记录状态,根据不同的状态判断,然后加与不加动画。
感觉很原始,很直观,有点Low

阅读 2.5k
1 个回答

变量 无法标记吧?你无法确定网络请求返回的时机。

两种方法:

  1. 如果真要确定是上中下哪个动画,可以加个枚举嘛:

    typedef NS_ENUM(NSInteger, Animation) {
        AnimationTop,
        AnimationCenter,
        AnimationBottom
    };
    
    - (void)request:(id)para type:(Animation)type {
    
        [GetNetWorkDataMethod getDataWithParameters: parametersDiscover requestType:ZheNetworkingRequestTypeGet andWithURLStr: kArticleList userInfo: nil success:^(NSURLSessionDataTask *task, NSDictionary *responseObject, NSDictionary *userInfo) {
            
            if (type == AnimationTop) {
                [weakSelf.artiListTableView.mj_header endRefreshing ];
            }
            
        } exception:^(NSDictionary *responseObject, NSDictionary *userInfo) {} failure:^(NSError *error, NSDictionary *userInfo) {
            
        }];
    }
    
    use: [self request:@[...] type:AnimationTop];
  2. 如果你觉得加个参数和枚举不美观,可以用回调:

    - (void)request:(id)para compelete:(dispatch_block_t)compelete {
    
        [GetNetWorkDataMethod getDataWithParameters: parametersDiscover requestType:ZheNetworkingRequestTypeGet andWithURLStr: kArticleList userInfo: nil success:^(NSURLSessionDataTask *task, NSDictionary *responseObject, NSDictionary *userInfo) {
            ...
            compelete ? compelete : 0;
            
        } exception:^(NSDictionary *responseObject, NSDictionary *userInfo) {} failure:^(NSError *error, NSDictionary *userInfo) {
            
        }];
    }
    // use: 上部动画
    [self request:@[...] compelete:^{
          // [self.artiListTableView.mj_header endRefreshing ];
    }];
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题