美文网首页iOS Developer
iOS 项目常出现的问题解决办法总结

iOS 项目常出现的问题解决办法总结

作者: 聂飞缘 | 来源:发表于2016-12-20 16:26 被阅读262次

    开篇

    这篇文章是我工作几个月以来出现的问题的解决方案 , 写出来方便自己以后过来查看

    1.工具类(Xcode)方面的问题

    • 一键生成Appicon 的网站以及工具APP

    1 http://icon.wuruihong.com/#/home

    2 http://ydimage.yidianhulian.com/

    3 https://itunes.apple.com/cn/app/id476533227?mt=12

    • 关于状态栏的问题

      1. 让状态栏变成白色
        self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;

      2.隐藏状态栏

    -(BOOL)prefersStatusBarHidden {
       return YES;
    }
    
    • Mac 终端的小技巧

    1.mac默认是看不到隐藏文件的,例如git之类的文件夹是看不到的,先看到的话打开终端

    打开终端,输入:
    defaults write com.apple.finder AppleShowAllFiles -bool true 此命令显示隐藏文件
    defaults write com.apple.finder AppleShowAllFiles -bool false 此命令关闭显示隐藏文件

    命令运行之后需要重新加载Finder:快捷键option+command+esc,选中Finder,重新启动即可

    2.利用uuidgen 这个命令可以生成随机的UUID

    3.统计项目总代码行数

    打开终端
    ①cd进入工程文件夹下
    ②执行命令find . "(" -name ".m" -or -name ".mm" -or -name ".cpp" -or -name ".h" -or -name "*.rss" ")" -print | xargs wc -l

    2.tableView方面的问题

    • 获取tableView的cell
    在这个例子中,当改变picker值的时候,Cell中的值也跟着改变。以前就一直很纠结怎么获取选中的Cell,看过这个例子后,真是豁然开朗呀!
    这个例子里用到了一个方法:indexPathForSelectedRow,用这个方法就能获取选择的cell了--!以前怎么没发现...
    关键代码:
    - (IBAction)dateAction:(id)sender{
     //这样就把选择的cell找出来了?真经典orz
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
     UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
     cell.detailTextLabel.text= [self.dateFormatter stringFromDate:self.pickerView.date];
    
    [self.tableView deselectRowAtIndexPath:indexPathanimated:YES];//注意!这句话可不能再放在didselected...的那个方法里
     }
    补充问题:以上方法只有在点击cell时才能确定cell的index,而如果点击了cell上的button,用上面的方法还是没办法解决。
    解决办法:由按钮获得它SuperView,即你自己定义的cell,知道这个cell了后在得到它的行数。
    

    tableView分割线调整 去除底部多余的线

     //分割线调整
        _tableView.separatorInset= UIEdgeInsetsMake(0, 10, 0, 10);
    
       //去除多余的线  原理创建一个空的View 作为tableView 的footView
      UIView *footView = [UIView new]; 
        _tableView.tableFooterView = footView;
    
      删除分割线 让它不显示
        tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    
    • 让tableView cell 不能选中
      self.tableView.allowsSelection = NO;
    • 让tableView 透明
    cell.backgroundColor = [UIColor clearColor];  
    _tableView.backgroundColor = [UIColor clearColor]; ```
    
    * 一进来页面让tableView默认选中第几行 
    

    [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:0] animated:YES scrollPosition:UITableViewScrollPositionMiddle];

    
    * tableView 自定义重写
    
    

    //重写父类方法
    -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
    {
    if (self=[super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
    [self initUI];
    }
    return self;
    }

    3.其他小技巧
    ---
    
    
    * 注释 
    接下来要分享的是添加注释文档的快捷键: ⌘ command + ⌥ option + /
    
    这个快捷键的功能跟 VVDocumenter 一样,可以给函数名,变量名等生成好看的注释文档
    http://www.jianshu.com/p/dad949fea031
    
    *  获取当前时间  
    
    • (NSString *)loadCurrentDate
      {
      NSDateFormatter *dateFormatter =[[NSDateFormatter alloc] init];
      // 设置日期格式
      [dateFormatter setDateFormat:@"YYYY-MM-dd hh:mm:ss"];
      NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
      // DDLogDebug(@"currentDate------------%@", [NSDate date]);
      return dateString;
      }
    * 随机数 相关 
    > arc4random_uniform(x)
    产生[0,x)的随机数。
    >获得指定范围的随机数
    

    (int)getRandomNumber:(int)from to:(int)to
    {
    return (int)(from + (arc4random() % (to - from + 1)));
    }

    
    * xcode 支持的iOS系统包文件夹路径
    > ios10包放在: 应用程序–显示包内容–Developer–Platforms–iPhoneOS.platform–DeviceSupport里
    ios10包地址: http://pan.baidu.com/s/1kUQnKAr   49tn
    
    * 颜色转换为背景图片  
    

    // 颜色转换为背景图片

    • (UIImage *)imageWithColor:(UIColor *)color {
      CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
      UIGraphicsBeginImageContext(rect.size);
      CGContextRef context = UIGraphicsGetCurrentContext();
      CGContextSetFillColorWithColor(context, [color CGColor]);
      CGContextFillRect(context, rect);
      UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
      UIGraphicsEndImageContext();
      return image;
      }
    * AFNetworking 请求头的设置 
    
    
    

    delete 请求头设置

    • (instancetype)hrManager

    {

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    manager.responseSerializer = [AFNJSONResponseSerializerWithData serializer];

    [manager.requestSerializer setValue:[self generateUserAgent] forHTTPHeaderField:@"User-Agent"];

    NSString *token = [HRServicesManager sharedManager].token;

    if (token) [manager.requestSerializer setValue:token forHTTPHeaderField:TOKEN_HEADER_NAME];

    manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/plain"];

    return manager;

    }

    
    

    post请求头设置

    • (instancetype)hrPostManager

    {

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];

    manager.responseSerializer = [AFNJSONResponseSerializerWithData serializer];

    [manager.requestSerializer setValue:[self generateUserAgent] forHTTPHeaderField:@"User-Agent"];

    NSString *token = [HRServicesManager sharedManager].token;

    if (token) [manager.requestSerializer setValue:token forHTTPHeaderField:TOKEN_HEADER_NAME];

    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", @"text/plain", nil];

    [manager.requestSerializer setValue:@"application/x-www-form-urlencoded;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];

    return manager;

    }

    
    
    
    

    相关文章

      网友评论

        本文标题: iOS 项目常出现的问题解决办法总结

        本文链接:https://www.haomeiwen.com/subject/nmaxvttx.html