风行的博客

iOS 开发 Tips

tips - 记录一些东西,希望也能帮助到有需要的人。




  • 用模拟器调试动画功能时,让动画执行的慢一些
1
模拟器菜单:Debug -> Show Animations
  • 取两位整数,不够补 0
1
NSLog(@"%@", [NSString stringWithFormat:@"%02d月", 3]);
  • 在不知道谁是第一响应者时隐藏键盘
1
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
  • Provisioning Profiles 所在路径
1
~/Library/MobileDevice/Provisioning Profiles
  • 解码 cms 加密后的授权文件
1
终端:security cms -D -i example.mobileprovision
  • 查找代码中的中文字符串,做国际化适配时会用到
1
Xcode左侧导航处:Find -> Regular Expression,然后输入 @"[^"]*[\u4E00-\u9FA5]+[^"\n]*?"
  • 获取全局唯一标示符
1
[[NSProcessInfo processInfo] globallyUniqueString];
  • 关闭 UINavigationController 滑动返回功能
1
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
  • 自定义 leftBarButtonItem 后,左滑返回手势失效
1
self.navigationController.interactivePopGestureRecognizer.delegate = self;
  • 在 xib 中给 UILabel 或 UITextView 设置多行文字
1
输入文字后,用 control + enter 来插入换行符,相当于在代码中添加 \n
  • 获取当前视图控制器
1
[[UIApplication sharedApplication].windows firstObject].rootViewController
  • 禁用 UIButton 并且颜色不变灰
1
button.userInteractionEnabled = NO;
  • UITableView 的分割线左边顶头
1
2
tableView.separatorInset = UIEdgeInsetsZero;
cell.layoutMargins = UIEdgeInsetsZero;
  • 修改约束后,用动画展示效果
1
2
3
[UIView animateWithDuration:0.3f animations:^{
    [myView layoutIfNeeded];
}];
  • 给 UIView 设置透明度后不影响 subviews
1
[view.backgroundColor colorWithAlphaComponent:0.5];
  • 隐藏 Grouped TableView 上边多余的间隔
1
self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];
  • 去掉 UITableView 下面多余空行
1
self.tableView.tableFooterView = [[UIView alloc] init];
  • 编译出 error 后继续编译
1
Xcode -> preference -> general -> 勾选 Continue building after errors
  • 在 Xcode 中创建 group 的同时创建 folder
1
Xcode -> 左侧右键 -> Add Files to ... -> New Folder -> Add
  • 清理 Derived Data
1
Xcode -> Product -> 按下 option -> 选择 Clean Build Folder... 
  • 自定义类后,禁止通过 init 方法初始化对象
1
2
3
- (instancetype)init UNAVAILABLE_ATTRIBUTE;
- (instancetype)init __attribute__((unavailable("init 方法不可用,请用 initWithName:")));
1
2
3
4
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

#pragma clang diagnostic pop
  • 中文转拼音
1
2
3
4
5
6
7
NSMutableString *str = [[NSMutableString alloc] initWithString:@"风行"];

if (CFStringTransform((__bridge CFMutableStringRef)str, NULL, kCFStringTransformMandarinLatin, NO)) {
    CFStringTransform((__bridge CFMutableStringRef)str, NULL, kCFStringTransformStripDiacritics, NO);
}

NSLog(@"%@", str);
  • KVC
1
2
3
4
5
6
7
8
9
10
11
NSArray *numbers = @[@4, @81, @2]; // @[@{@"price": @4}, @{@"price": @81}, @{@"price": @2}]

NSLog(@"max = %@", [numbers valueForKeyPath:@"@max.self"]); // @max.price
NSLog(@"min = %@", [numbers valueForKeyPath:@"@min.self"]); // @min.price
NSLog(@"sum = %@", [numbers valueForKeyPath:@"@sum.self"]); // @sum.price
NSLog(@"avg = %@", [numbers valueForKeyPath:@"@avg.self"]); // @avg.price

//数组去重
NSArray *devices = @[@"iPhone6", @"iPhone5", @"iPhone6 Plus", @"iPhone6", @"iPhone5"];

NSLog(@"devices = %@", [devices valueForKeyPath:@"@distinctUnionOfObjects.self"]); // iPhone5, iPhone6, iPhone6 Plus