iOS开发遇到的问题及解决办法

1、TableView不显示没内容的Cell怎么办?

 self.tableView.tableFooterView = [[UIView alloc] init];

2、自定义了leftBarbuttonItem左滑返回手势失效了怎么办?

self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;

3、ScrollView莫名其妙不能在viewController划到顶怎么办?

 self.automaticallyAdjustsScrollViewInsets = NO;

4、怎么在不新建一个Cell的情况下调整separaLine的位置?

 _myTableView.separatorInset = UIEdgeInsetsMake(0, 100, 0, 0);

5、怎么点击self.view就让键盘收起,需要添加一个tapGestures么?

  - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 { 
    [self.view endEditing:YES];
 }

6、怎么像safari一样滑动的时候隐藏navigationbar?

 navigationController.hidesBarsOnSwipe = Yes

7、导航条返回键带的title太讨厌了,怎么让它消失!

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault];

8、MPMovieController 工具条隐藏

[moviePleyViewController.moviePlayer setControlStyle:MPMovieControlStyleNone];

9、在使用view的缩放的时候,layer.border.width随着view的放大,会出现锯齿化的问题,解决这个问题需要设置这个属性

self.layer.allowsEdgeAntialias

10、** **layoutSubviews【点击】 需要将[super layoutSubviews];放到最后,不然iOS7有可能会有这个崩溃

11、NSString使用stringWithFormat拼接的相关知识

  • 保留2位小数点

    //.2代表小数点后面保留2位(2代表保留的数量)
    NSString *string = [NSString stringWithFormat:@"%.2f",M_PI];
    //输出结果是: 3.14
    NSLog(@"%@", string);
    
  • 用0补全的方法

    NSInteger count = 5;
    //02代表:如果count不足2位 用0在最前面补全(2代表总输出的个数)
    NSString *string = [NSString stringWithFormat:@"%02zd",count];
    //输出结果是: 05
    NSLog(@"%@", string);
    
  • 字符串中有特殊符号%怎么办

    NSInteger count = 50;
    //%是一个特殊符号 如果在NSString中用到%需要如下写法
    NSString *string = [NSString stringWithFormat:@"%zd%%",count];
    //输出结果是: 50%
    NSLog(@"%@", string);
    

12、判断是否为gif/png图片的正确姿势

  • 显式判定

    //假设这是一个网络获取的URL 
    NSString *path = @"http://pic3.nipic.com/20090709/2893198_075124038_2.gif";
     // 判断是否为gif NSString *extensionName = path.pathExtension;
    if ([extensionName.lowercaseString isEqualToString:@"gif"]) 
    { 
      //是gif图片
    }
    else 
    {
       //不是gif图片 
    }
    
  • 隐式判定
    取出图片数据的第一个字节, 就可以判断出图片的真实类型

    //通过图片Data数据第一个字节 来获取图片扩展名
    - (NSString *)contentTypeForImageData:(NSData *)data { 
        uint8_t c;
       [data getBytes:&c length:1];  
       switch (c) { 
          case 0xFF: return @"jpeg";
          case 0x89: return @"png"; 
          case 0x47: return @"gif"; 
          case 0x49: 
          case 0x4D: return @"tiff"; 
          case 0x52:
           if ([data length] < 12) 
           {
             return nil;
           } 
          NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
         if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) 
         {
           return @"webp"; 
          }
         return nil; 
      } 
      return nil;
    }
    

其实图片数据的第一个字节是固定的,一种类型的图片第一个字节就是它的标识, 我们来调用一下这个方法:

//假设这是一个网络获取的URL
NSString *path = @"http://pic.rpgsky.net/images/2016/07/26/3508cde5f0d29243c7d2ecbd6b9a30f1.png"; 
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:path]]; 
//调用获取图片扩展名 
NSString *string = [self contentTypeForImageData:data]; 
//输出结果为 png 
NSLog(@"%@",string);

13、UITextField使用注意

  • UITextField 如何设置占位文字的颜色

    //先设置占位文字
    textField.placeholder = @"设置了占位文字内容以后, 才能设置占位文字的颜色";
    //占位文字颜色
    [textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];
    
  • UITextField 监听文字改变 最好不要用代理

    [textField addTarget:self action:@selector(textEditingChanged) forControlEvents:UIControlEventEditingChanged];
    

14、registerClass和registerNib的区别

registerClass和registerNib的区别

15、iTunes Connect 中名称副标题和描述及关键词重复被拒

Guideline 2.3.7 - Performance - Accurate Metadata

Your app name or subtitle to be displayed on the App Store includes keywords or descriptors, which are not appropriate for use in these metadata items.

Specifically, the following words in your app name or subtitle are considered keywords or descriptors:

品一-xxxxxx

解决方案: 改名字呗

16、dyld: Library not loaded:
  • 脑残加手贱引发的血案

你可能感兴趣的:(iOS开发遇到的问题及解决办法)