已經(jīng)很久沒有寫簡書了,主要是不知道要寫點什么著觉。這次主要是記錄一些自己在開發(fā)過程中覺得有必要記載的一些小知識,以免自己忘記逞刷。后期也會不定期的更新挣棕。下面就直接進入主題吧!
pch文件的配置
如果pch就在項目目錄中
$(SRCROOT)/項目名/pch文件
如果pch文件在項目中的一個文件夾內(nèi)
$(SRCROOT)/項目名/文件夾名/pch文件利用TabBarController搭建項目基本結(jié)構(gòu)
- (void)viewDidLoad {
[super viewDidLoad];
[self addAllChildViewController];
}
/**
* 添加所有子控制器
*/
- (void)addAllChildViewController {
}
/**
* 設(shè)置子控制器
*/
- (void)setupChildViewController:(UIViewController *)vc title:(NSString *)title imageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName {
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
vc.title = title;
vc.tabBarItem.image = GetImage(imageName);
vc.tabBarItem.selectedImage = [GetImage(selectedImageName) imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[self addChildViewController:nav];
}
- 設(shè)置tabBarItem 文字的顏色
[[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : RGBACOLOR(81, 81, 81, 1.0)} forState:UIControlStateNormal];
[[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : RGBACOLOR(18, 150, 219, 1.0)} forState:UIControlStateSelected];
- Masonry 動畫
重點:[view.superview layoutIfNeeded];
示例:
[view mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(400);
make.left.mas_equalTo(100);
make.size.mas_equalTo(CGSizeMake(100, 100));
}];
[view.superview layoutIfNeeded];//如果其約束還沒有生成的時候需要動畫的話,就請先強制刷新后才寫動畫亲桥,否則所有沒生成的約束會直接跑動畫
[UIView animateWithDuration:3 animations:^{
[view mas_updateConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(200);
}];
[view.superview layoutIfNeeded];//強制繪制
}];
- 字符編碼
iOS中對字符串進行UTF-8編碼:輸出str字符串的UTF-8格式
[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
解碼:把str字符串以UTF-8規(guī)則進行解碼
[str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; - 導航控制器奇幻的時候偶爾卡住的原因
原因:在RootViewController右劃返回手勢也可以響應洛心,因為沒有上一級頁面,導致整個程序頁面不響應
解決辦法: 在導航控制器的viewDidLoad方法中設(shè)置代理
- (void)viewDidLoad {
[super viewDidLoad];
self.delegate = self;
}
然后實現(xiàn)代理方法,判斷是否是根控制器
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if (navigationController.viewControllers.firstObject == viewController) {
self.interactivePopGestureRecognizer.enabled = false;
}else {
self.interactivePopGestureRecognizer.enabled = true;
}
}