有些知识点很简单, 写下这些作为备忘,好记性不如烂笔头,持续更新中…
-
Xcode
ATS
(App Transport Security的简称)设置
在plist文件中新建类型为Dictionary,key为App Transport Security Settings的键,
在其节点下添加类型为Boolean key为 Allow Arbitrary Loads 值为YES的键值对.
-
设置相机中文环境(打开相机拍照默认是英文)
项目工程-> TARGETS ->Info ->Custom iOS Target Properties,
寻找key值为Localization native development region的一栏修改为China.
-
Xcode 模拟器中输入中文
打开工程项目,command + shift + h : 回到home页;
Settings->General->Language&Region->Other Languages -> Chinese, Simplified(简体中文)-> Done - > Change to Chinese, Simplified -
修改
UISearchBar
的placeholder的字体、字体颜色UITextField *searchField = [self.searchBar valueForKey:@"_searchField"]; [searchField setValue:[UIFont systemFontOfSize:14] forKeyPath:@"_placeholderLabel.font"]; [searchField setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];
-
Xcode9新建工程运行显示不全屏解决办法
在info.plist文件里配置key为Launch screen interface file base name
value为LaunchImage的string。
屏幕 -
去掉无参block的xcode警告
定义没有参数的blocktypedef void (^Block)();
xcode会有“This block declaration not a prototype”的警告,去掉xcode警告的解决方法:
(1).typedef void (^Block)(void);
(2).typedef void (^Block)(id _Nullable ,...);
-
**setValue 和 setObject 的区别 **
(1). setObject:forkey方法NSMutabledictionary特有的
(2). setValue:forKey方法是KVC(键-值编码)的主要方法
(3). setObject:forkey:中value不能为 nil,key可以是任何类型
(4). setValue:forKey:中value可以是nil,当value为nil的时候,会自动调用setValue:forUndefinedKey:方法
(5). setValue:forKey:中key的参数只能是NSString类型 -
Pods管理三方框架,去掉xcode警告
如ReactiveObjC:在podfile文件中编辑
pod ‘ReactiveObjC’, ‘~> 3.1.0’,:inhibit_warnings => true # RAC -
TableView或者WebView整体上移
self.edgesForExtendedLayout = UIRectEdgeNone;
适用于不同系统版本代码更迭出现状况时使用。 -
Xcode10 #import 不提示头文件
Xcode -> File -> Workspace Settings -> Build System -> Legacy Build System
-
cocoaPods install/update Error installing xx fatal: unable to access ‘https://github.com/xx.git/’: Failed to connect to 192.31.253.112 port 8080: Operation timed out
截图如下:
解决方法:
git config --global http.proxy
查询到当前设置的代理,然后取消这个设置:
git config --global --unset http.proxy
再install/update,成功了!
- RAC观察数组元素个数变化
// 初始化
self.items = [[NSMutableArray alloc] init];
// 添加数组元素
[[self mutableArrayValueForKey:@"items"] addObject:obj];
// 移除数组元素
[[self mutableArrayValueForKey:@"items"] removeObject:obj];
// 数据源发生变化更新UI
[[[RACObserve(self, self.items) merge:self.items.rac_sequence.signal] map:^id(NSArray * value) {
return @(self.items.count > 0);
}] subscribeNext:^(NSNumber * _Nullable x) {
if ([x integerValue] == 1) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.contentTableView reloadData];
});
}
}];
注意:
不能用 [self.items addObject:obj];
[self.items removeObject:obj];来改变数组元素,这样监听不到数组元素的变化;
- 用Terminal打开某个文件夹
系统偏好设置 -> 键盘 -> 快捷键 -> 服务,勾选“新建位于文件夹位置的终端窗口”
在 Finder 里面选中文件夹右键,菜单“服务”->新建位于文件夹位置的终端窗口"
第二种方式:
先打开terminal ,然后键入 cd ,把目标文件夹直接拖入终端,显示的就是目标文件夹的完整路径;
-
Auto property synthesis will not synthesize property ‘delegate’; it will be implemented by its superclass, use @dynamic to acknowledge intention
answer:
-
IB 添加辅助线
在IB模式双击选中需要添加辅助线的View, Editor-> Guides ->
-
IB 删除辅助线
找到IB所在的文件右键选择 以 source code 方式打开,搜索,然后删除此段保存重新以IB方式打开;