iOS新建项目基本配置
每次新建一个项目时,总是会忘记配置一些内容,然后需要各种查找解决方案,现在记录起来,逐渐扩充,以后再新建项目直接过来找答案就可以。
公共头文件编译
项目中涉及到C++混编时,需要修改此项,Build Settings - Compile Sources As 设置为Objective-C++
podfile
如果项目为OC,而Cocoapods中使用了swift的第三方库,或者项目为swift使用OC的第三方库,则在podfile中需要添加use_frameworks!这一句。同时,在OC项目中还需要设置Build Settings - Build Options - Always Embed Swift Standard Libraries为Yes。
pch文件配置
Precompile Prefix Header设置为YesPrefix Header路径设置为$(SRCROOT)/$(PROJECT_NAME)/PrefixHeader.pch
Missing file警告
这里主要是由于Xcode中内置的git提示文件版本的问题,因此可以假装提交一下git,执行以下语句:1
2cd PROJECT_PATH
git add .
然后重新打开Xcode。
状态栏颜色设置
状态栏的字体为黑色:UIStatusBarStyleDefault
状态栏的字体为白色:UIStatusBarStyleLightContent
- 在info.plist中:
将View controller-based status bar appearance设置为NO显示为白色,YES则显示黑色
如果View controller-based status bar appearance为YES,则[UIApplication sharedApplication].statusBarStyle的设置变成无效。 在
App delegate中:1
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
在个别状态栏字体颜色不一样的vc中:
1
2
3
4
5
6
7- (void)viewWillAppear:(BOOL)animated {
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}
用下面的方法:
在vc中重写vc的
preferredStatusBarStyle方法。1
2
3- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleDefault;
}在
viewDidload中调用:1
[self setNeedsStatusBarAppearanceUpdate];
但是,当vc在nav中时,上面方法没用,vc中的preferredStatusBarStyle方法根本不用被调用。
原因是,[self setNeedsStatusBarAppearanceUpdate]发出后,只会调用navigation controller中的preferredStatusBarStyle方法,vc中的preferredStatusBarStyley方法不会被调用。
解决办法有两个:
方法一:
设置navbar的barStyle属性会影响status bar的字体和背景色,如下。1
2
3
4
5
6
7//status bar的字体为白色
//导航栏的背景色是黑色。
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
//status bar的字体为黑色
//导航栏的背景色是白色,状态栏的背景色也是白色。
//self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
方法二:
自定义一个nav bar的子类,在这个子类中重写preferredStatusBarStyle方法:1
2
3
4
5
6
7MyNav* nav = [[MyNav alloc] initWithRootViewController:vc];
self.window.rootViewController = nav;
@implementation MyNav
- (UIStatusBarStyle)preferredStatusBarStyle {
UIViewController* topVC = self.topViewController;
return [topVC preferredStatusBarStyle];
}