记录最近开发项目遇到的坑坑

delims 于 2019-08-18 发布

说真的,很久没有开发项目了,得有半年了,最近公司开发了一个项目,项目比较简单,要求独立开发8天完成。完成的还算比较顺利,但是中间还是遇到了一些坑坑。一些坑都是之前遇到过的,结果又百度了一遍,不得不承认最近状态不好,记忆力明显下降。所以在此记录一下,加强一下记忆。

公司开发的项目就是一个简单的问答系统。

问题: 使用hidesBottomBarWhenPushed,push后又pop结果状态栏和导航栏都变色了。从view debug上面看好像是里面有一层黑色。

解决办法: 原来是因为没有给UIWindow设置一个背景色,添加背景色为白色后问题解决。

问题: 设置UITableViewAutomaticDimension后在iOS9和iOS10的系统上面cell缩成了一团。

解决办法:iOS系统版本号≤10的系统,必须设置estimatedRowHeight才可以,可以直接设置给tableview也可以在代理实现返回estimatedRowHeight的方法。

问题:用计时器更新button上的秒数时闪烁 解决办法:把button的类型改成custom,默认是system

直接写注意事项吧。下面是注意事项

关于controller跳转时候navigationBarHidden的问题

####情景如下 A页面是根页面,有导航栏
B页面没有导航栏
想由A push 到B 侧滑手势失效。

总结:

  1. 使用 [self.navigationController setNavigationBarHidden:YES animated:NO];
    会隐藏导航,并且手势消失
  2. 使用 self.navigationController.navigationBar.hidden = YES;
    隐藏导航栏手势可用,但是会导致push的过度效果不好看。
  3. 针对1的情况,可以在B页面这样设置来启用手势。需要让self实现UIGestureRecognizerDelegate,可以不用实现具体方法。
         self.navigationController.interactivePopGestureRecognizer.delegate = self;
    

最大的坑

以前做的项目上传图片要么是用的阿里云要么就是用post只传一张图片给后台,就是直接把图片的data数据赋值给HTTPbody。非常简单。

这次要求上传图片的时候还带有一个业务参数,这可把我难倒了,我记得之前我就对这种方式有抵触,但是太懒了,一些生活琐事也让我无心专心学习。但是这次遇上了不得不解决。

最后通过查资料得知HTTPbody的数据有格式,通过boundary进行参数分割。最后我用AFNetworking封装好的下面这段代码实现了需求。


    AFHTTPSessionManager *manage = [AFHTTPSessionManager manager];
    [manage.requestSerializer setValue:@"application/multipart/form-data" forHTTPHeaderField:@"Content-Type"];
    manage.requestSerializer = [AFHTTPRequestSerializer serializer];
    manage.responseSerializer = [AFHTTPResponseSerializer serializer];
    manage.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html", @"text/json", @"text/javascript",@"text/plain", nil];
    
    [manage POST:self.URL.absoluteString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
  		  //业务参数imageType的值是2
        [formData appendPartWithFormData:[@"2" dataUsingEncoding:NSUTF8StringEncoding] name:@"imageType"];
        //把图片通过参数imageFile传给后台
        [formData appendPartWithFileData:self.formData name:@"imageFile" fileName:@"a.jpg" mimeType:@"image/jpeg"];
    } progress:^(NSProgress * _Nonnull uploadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        BCRequestResponseModel *model = [BCRequestResponseModel modelWithJSON:responseObject];
        completion(model,nil);
        NSLog(@"%@",responseObject);
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        completion(nil,error);
    }];