iOS开发中的一些技巧及代码片段

412 阅读3分钟
  • 显示或隐藏Finder中的文件

你想打开整个系统的隐藏文件可以在终端下输入以下命令: defaults write com.apple.finder AppleShowAllFiles -bool true 关闭显示隐藏功能 defaults write com.apple.finder AppleShowAllFiles -bool false killall Finder 重启Finder

  • 使用终端查询代码总行数

使用终端命令进入项目所在的文件夹 在终端中输入

find . "(" -name "*.m" -or -name "*.strings" -or -name "*.h" ")" -print | xargs wc -l

回车就可以查询到了

代码行数
total前面的数字就是代码的行数...

  • 富文本改变文字不同区域的颜色

富文本实例
在UILabel UITextView UITextField等控件中都存在一个attributedText关键字,其实这就是富文本.他是NSAttributedString类型的,这个类中存在着改变文字不同段落的文字大小,颜色等属性的方法.富文本也就是可改变属性的字符串...

NSAttributedString遵循了NSCopying,NSMutaleCopying以及NSSecureCoding协议.可以通过代理实现相应的方法,在这里不详述这个属性.

init方法

如上图,我们可以使用NSString,来初始化一个富文本,也可以在使用字符串初始化的时候带一个文本属性,当然直接使用一个符文本的字符串初始化也可...

NSAttributedString中最重要的参数

_subtitleLab.text = [NSString stringWithFormat:@"     %@",[_myDict objectForKey:@"subtitle"]];
    _subtitleLab.width = SCREENWIDTH-20;
 *attStr = [[NSMutableAttributedString alloc] initWithString:_subtitleLab.text];
    NSArray *arr = [_subtitleLab.text componentsSeparatedByString:@":"];
    NSString *firstStr = arr[0];
//    [attStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14] range:NSMakeRange(_subtitleLab.text.length-secondStr.length, secondStr.length)];
    [attStr addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithHexString:@"#ef8c55"] range:NSMakeRange(0, firstStr.length)];
    _subtitleLab.attributedText = attStr;
  • 二维码扫描器中间来回滚动的线的动画

UIView *line = [[UIImageView alloc] initWithFrame: CGRectMake(60, self.view.bounds.size.height/2.0-self.view.width+190, self.view.width-120, 2)];

line.backgroundColor = [UIColor colorWithHexString:@"62bb46"];          [self.view addSubview:line ];       >   [UIView animateWithDuration:2.5 delay:0.0 options:UIViewAnimationOptionRepeat animations:^{                  line.frame = CGRectMake(60, self.view.bounds.size.height/2.0+80, self.view.width-120, 2);              } completion:nil];

  • 调整图片大小

UIGraphicsBeginImageContext(size);     [img drawInRect:CGRectMake(0, 0, size.width, size.height)];     UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();     UIGraphicsEndImageContext();     return scaledImage; }```

  • 截屏

-(void)fullScreenshots{     UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow];      UIGraphicsBeginImageContext(screenWindow.frame.size);//全屏截图,包括window      [screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()];      UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();    UIGraphicsEndImageContext();    UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);     }```

  • SDWebImage实现图片的渐进渐处模糊加载

[_photoImageView sd_setImageWithURL:[NSURL URLWithString:myParser.kv_photoStr] placeholderImage:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {         SDWebImageManager *manager = [SDWebImageManager sharedManager];         if ([manager diskImageExistsForURL:[NSURL URLWithString:myParser.kv_photoStr]]) {             NSLog(@"不加载动画");         }else {              _photoImageView.alpha = 0.0;             [UIView transitionWithView:_photoImageView                               duration:1.0             options:UIViewAnimationOptionTransitionCrossDissolve                             animations:^{                                 [_photoImageView setImage:image];                                 _photoImageView.alpha = 1.0;                             } completion:NULL];         }      }];```

  • UISegmentContrl更改Index上的文字颜色和大小

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],NSForegroundColorAttributeName, [UIFont systemFontOfSize:17],NSFontAttributeName, nil]; [segmentedCtrl setTitleTextAttributes:dic forState:UIControlStateSelected];

NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor blackColor],NSForegroundColorAttributeName, [UIFont systemFontOfSize:17],NSFontAttributeName, nil]; [segmentedCtrl setTitleTextAttributes:dic1 forState:UIControlStateNormal];```

  • 检查相机权限

#pragma mark - 检查相机权限

  • (BOOL)canUserCamear{ AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; if (authStatus == AVAuthorizationStatusDenied) { UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"请打开相机权限" message:@"设置-隐私-相机" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"取消", nil]; alertView.tag = 100; [alertView show]; return NO; } else{ return YES; } return YES; }

- 获取UISearchBar中的textField

>```
UITextField *txfSearchField = [searchBar valueForKey:@"_searchField"];
  • 解决手势与UIButton冲突问题
  • (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { if ([touch.view isKindOfClass:[UIButton class]]){ return NO; } return YES; }


[记一些技巧](http://mp.weixin.qq.com/s?__biz=MjM5OTM0MzIwMQ==&mid=2652547085&idx=1&sn=549e63eb5c6a7e62ce16bc835e3fbc8b&scene=0#wechat_redirect)