iOS Tips【持续更新】

1.DSYM在哪?
使用Finder前往路径

~/Library/Developer/Xcode/Archives/

2.UITextField的placeholder属性修改

textField.placeholder = @"xxxx";  
[textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];  
[textField setValue:[UIFont boldSystemFontOfSize:16] forKeyPath:@"_placeholderLabel.font"];

3.全局替换系统字体
如果你的app是纯代码写的,那么只要创建一个category就可以替换app内所有系统字体。
UIFont+SystemFontOverride.h

#import <UIKit/UIKit.h>

@interface UIFont (SystemFontOverride)
@end

UIFont+SystemFontOverride.m

@implementation UIFont (SystemFontOverride)

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"

+ (UIFont *)boldSystemFontOfSize:(CGFloat)fontSize {
    return [UIFont fontWithName:@"fontName" size:fontSize];
}

+ (UIFont *)systemFontOfSize:(CGFloat)fontSize {
    return [UIFont fontWithName:@"fontName" size:fontSize];
}

#pragma clang diagnostic pop

@end

参考:

http://stackoverflow.com/a/17977354

4.获取ipa中所有图片资源

https://github.com/devcxm/iOS-Images-Extractor

5.代码片段(CodeSnippets)路径

~/Library/Developer/Xcode/UserData/CodeSnippets 

知道此路径就可以将代码片段使用git来管理,方便各个终端同步。


6.下面方法获取资源路径为nil

- (NSString *)pathForResource:(NSString *)name
                       ofType:(NSString *)extension

解决办法:target->Build Phases->Copy bundle resource,点击下面“+”,手动添加资源文件。


7.移除代码在git版本下的控制
cd 到工程目录,然后执行下面代码:

rm -rf .git

8.swift 学习资料
http://www.swiftguide.cn


9.文字尾部加入图片
http://www.jianshu.com/p/fcf6d9b88749


10.viewController 瘦身
http://www.jianshu.com/p/5316440fe78a


11.提取ipa中的图片素材
https://github.com/devcxm/iOS-Images-Extractor/blob/master/README_zh-Hans.md


12.修改stausbar文字颜色
全局控制,在plist文件中添加:

<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>

如果只改变单个页面,有两种情况:
在导航控制器下的UIViewController中:

self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;

在非导航控制器下的UIViewController中:

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

13.监听UITextField中字数的变化
方法1:

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(textFieldDidChange:)
                                                 name:UITextFieldTextDidChangeNotification
                                               object:_textField];

记得在dealloc方法中移除观察者。

方法2:

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

14.IT技能图谱
https://github.com/TeamStuQ/skill-map


15.改 UISearchBar 圆角的小技巧

摘自:改 UISearchBar 圆角的小技巧

首先在 UIView 的 category 里加一个方法:

UIView+Utils.m

- (UIView*)subViewOfClassName:(NSString*)className {
    for (UIView* subView in self.subviews) {
        if ([NSStringFromClass(subView.class) isEqualToString:className]) {
            return subView;
        }

        UIView* resultFound = [subView subViewOfClassName:className];
        if (resultFound) {
            return resultFound;
        }
    }
    return nil;
}

用的时候:

UIView* backgroundView = [searchBar subViewOfClassName:@"_UISearchBarSearchFieldBackgroundView"];
backgroundView.layer.cornerRadius = 14.0f;
backgroundView.clipsToBounds = YES;

用这个方法还可以改取消按钮的颜色、字体.


16.纬度和经度在 iOS 上最精确的类型是什么?

答:double/CLLocationDegrees。参考


17.去掉UITableView风格为group时候的最顶部的空白距离

CGRect frame=CGRectMake(0, 0, 0,CGFLOAT_MIN); 
self.tableView.tableHeaderView=[[UIView alloc]initWithFrame:frame];

18.解析苹果审核反馈崩溃日志 .crash 文件
解析苹果审核反馈崩溃日志 .crash 文件


19.Carthage 包管理工具
Carthage 包管理工具,另一种敏捷轻快的 iOS & MAC 开发体验
Carthage 的一点使用技巧


20.SDWebImage缓存策略吗
天天都在用的 SDWebImage, 你了解它的缓存策略吗?


21.iOS中NSLog输出格式大全

格式 意义
%@ 对象
%d, %i 整数
%u 无符整形
%f 浮点/双字
%x, %X 二进制整数
%o 八进制整数
%zu size_t
%p 指针
%e 浮点/双字 (科学计算)
%g 浮点/双字
%s C 字符串
%.*s Pascal字符串
%c 字符
%C unichar
%lld 64位长整数(long long)
%llu 无符64位长整数
%Lf 64位双字

22.字体最小值设定

textField.minimumFontSize = 12;
textField.adjustsFontSizeToFitWidth = YES;

23.通过appid 获取app的图标(icon)
参考:iPhone App: how to get app icon from app id?

NSString *idString = @"id389801252";

NSString *numericIDStr = [idString substringFromIndex:2]; // @"389801252"
NSString *urlStr = [NSString stringWithFormat:@"http://itunes.apple.com/lookup?id=%@", numericIDStr];
NSURL *url = [NSURL URLWithString:urlStr];
NSData *json = [NSData dataWithContentsOfURL:url];

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:json options:0 error:NULL];
NSArray *results = [dict objectForKey:@"results"];
NSDictionary *result = [results objectAtIndex:0];
NSString *imageUrlStr = [result objectForKey:@"artworkUrl100"]; // or 512, or 60

NSURL *artworkURL = [NSURL URLWithString:imageUrlStr];
NSData *imageData = [NSData dataWithContentsOfURL:artworkURL];
UIImage *artworkImage = [UIImage imageWithData:imageData];

24.__IPHONE_OS_VERSION_MAX_ALLOWED__IPHONE_OS_VERSION_MIN_REQUIRED

关于__IPHONE_OS_VERSION_MAX_ALLOWED__IPHONE_OS_VERSION_MIN_REQUIRED::

__IPHONE_OS_VERSION_MAX_ALLOWED系统最高版本(可以理解为当前设备的系统版本)

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_0
// 系统版本在iOS7.0及以上则编译此部分代码
#else
// 如果低于iOS7.0则编译此部分代码
#endif

__IPHONE_OS_VERSION_MIN_REQUIRED 系统最低版本(也就是iOS Deployment Target选择的版本)

#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_7_0
// 如果选择(iOS Deployment Target)的最低支持版本在iOS7.0及以上才可以使用
- (void)execute;
#endif

__IPHONE_OS_VERSION_MAX_ALLOWED 这个宏得到的是设备当前的系统版本
__IPHONE_OS_VERSION_MIN_REQUIRED 这个宏它可以根据当前的选择的编译环境进行预编译处理


25.项目体积优化

http://www.jianshu.com/p/a72d03e92c80

http://www.zoomfeng.com/blog/ipa-size-thin.html

  1. AFN 返回json为空转为空字符串

AFJSONResponseSerializer *response = [AFJSONResponseSerializer serializer];
response.removesKeysWithNullValues = YES;

  1. cocoapods更新索引
pod repo update

如果不行,就先删除本地索引,再建索引,删除方法:

rm ~/Library/Caches/CocoaPods/search_index.json

再搜索就会重建索引了

  1. 配置文件地址
~/Library/MobileDevice/Provisioning Profiles

更新配置文件后,清理本地缓存,然后重新拉取

29.UISearchBar 在iOS 11变高
解决办法:

if ([[UIDevice currentDevice] systemVersion].doubleValue >= 11.0)
{
   [[searchbar.heightAnchor constraintEqualToConstant:44.0] setActive:YES];
}

30.查看一个静态库是否支持64位
步骤:
1).cd 到.a 文件所在的文件夹;
2).执行如下命令

lipo -info xxxx.a

结果:

Architectures in the fat file: xxxx.a are: armv7 i386 x86_64 arm64 

说明支持64位。

31.MLLabel 点击链接与所在viewA手势冲突解决:
在viewA的手势代理中添加如下代码:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    return ![self.titleLb linkAtPoint:[touch locationInView:self.titleLb]];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 1、网络请求封装采用类方法还是单例模式?2、extern字符串常量,宏定义字符串常量怎么选?const常量有数据类...
    devHornet阅读 302评论 0 0
  • 这两天会更新
    hl_arrom阅读 214评论 0 0
  • 爸爸你好。转眼间春节离家已有近二十天了。我们在这里都挺好的,你们就放心吧。过年在家的时候,你发现了没有,我每天的起...
    归来仍少年兮阅读 761评论 4 6
  • apply、call 有什么作用,什么区别 apply、call都作用本质都是改变函数的执行环境上下文,即this...
    谢梦扬_阅读 146评论 0 0
  • 普陀山作为中国佛教圣地,“门庭若市”、香火鼎盛。所见之处,到处是丢钱烧香、三叩九拜、阿弥陀佛,其心赤诚似乎天地可鉴...
    一品馥兰阅读 764评论 0 0