每次新建一个项目时,总是会忘记配置一些内容,然后需要各种查找解决方案,现在记录起来,逐渐扩充,以后再新建项目直接过来找答案就可以。

公共头文件编译

项目中涉及到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 LibrariesYes

pch文件配置

  • Precompile Prefix Header设置为Yes
  • Prefix Header路径设置为$(SRCROOT)/$(PROJECT_NAME)/PrefixHeader.pch

Missing file警告

这里主要是由于Xcode中内置的git提示文件版本的问题,因此可以假装提交一下git,执行以下语句:

1
2
cd PROJECT_PATH
git add .

然后重新打开Xcode。

状态栏颜色设置

状态栏的字体为黑色:UIStatusBarStyleDefault
状态栏的字体为白色:UIStatusBarStyleLightContent

  1. 在info.plist中:
    View controller-based status bar appearance设置为NO显示为白色,YES则显示黑色
    如果View controller-based status bar appearanceYES,则[UIApplication sharedApplication].statusBarStyle的设置变成无效。
  2. App delegate中:

    1
    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
  3. 在个别状态栏字体颜色不一样的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;
    }

用下面的方法:

  1. 在vc中重写vc的preferredStatusBarStyle方法。

    1
    2
    3
    - (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleDefault;
    }
  2. 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
7
MyNav* nav = [[MyNav alloc] initWithRootViewController:vc];
self.window.rootViewController = nav;
@implementation MyNav
- (UIStatusBarStyle)preferredStatusBarStyle {
UIViewController* topVC = self.topViewController;
return [topVC preferredStatusBarStyle];
}