知识点总结:01-前期准备

1. 从iOS9开始的常见报错

objc Application windows are expected to have a root view controller at the end of application launch

  • 从iOS9开始, 在程序启动完毕那一刻显示出来的窗口必须要设置根控制器(在程序启动完成后,在显示窗口则可以不设置根控制器)

2.应用程序的图标

旧项目中的图标只要符合1个条件即可
图片名叫做Icon.png

3.有些图片显示出来会自动渲染成蓝色

比如:

设置tabBarItem的选中图片
bjc vc.tabBarItem.selectedImage = image;

设置UIButtonTypeSystem样式按钮的image时

 [btn setImage:image forState:UIControlStateNormal];```

### 4.tabarItem按钮选中时,图片会被系统渲染的解决方案:
- 4.1 再次产生一张不会进行渲染的图片
```objc 
// 加载图片 
UIImage *tempImage = [UIImage imageNamed:@"tabBar_essence_click_icon"];
 // 产生一张不会进行自动渲染的图片 
UIImage *selectedImage = [tempImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
vc.tabBarItem.selectedImage = selectedImage;
  • 4.2 直接在xcassets文件中配置


    知识点总结:01-前期准备_第1张图片
    Snip20151105_1.png

5.设置TabBarItem的文字属性

直接设置每一个tabBarItem对象

// 普通状态下的文字属性 
NSMutableDictionary *normalAttrs = [NSMutableDictionary dictionary]; 
normalAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:14]; 
normalAttrs[NSForegroundColorAttributeName] = [UIColor grayColor]; [vc.tabBarItem setTitleTextAttributes:normalAttrs forState:UIControlStateNormal];
// 选中状态下的文字属性 
NSMutableDictionary *selectedAttrs = [NSMutableDictionary dictionary]; 
selectedAttrs[NSForegroundColorAttributeName] = [UIColor darkGrayColor]; 
[vc.tabBarItem setTitleTextAttributes:selectedAttrs forState:UIControlStateSelected];
// 字典中用到的key 1.iOS7之前(在UIStringDrawing.h中可以找到) - 比如UITextAttributeFont\UITextAttributeTextColor - 规律:UITextAttributeXXX
  • iOS7开始(在NSAttributedString.h中可以找到)
    比如:
    NSFontAttributeName\NSForegroundColorAttributeName - 规律:NSXXXAttributeName ```

6. 通过UITabBarItem的appearance对象统一设置

/**** 设置所有UITabBarItem的文字属性 ****/ 
UITabBarItem *item = [UITabBarItem appearance];
 // 普通状态下的文字属性 
NSMutableDictionary *normalAttrs = [NSMutableDictionary dictionary]; 
normalAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:14]; 
normalAttrs[NSForegroundColorAttributeName] = [UIColor grayColor]; 
[item setTitleTextAttributes:normalAttrs forState:UIControlStateNormal];

 // 选中状态下的文字属性 
NSMutableDictionary *selectedAttrs = [NSMutableDictionary dictionary]; 
selectedAttrs[NSForegroundColorAttributeName] = [UIColor darkGrayColor]; 
[item setTitleTextAttributes:normalAttrs forState:UIControlStateSelected];

7.项目的图片资源

  • 可以利用一个Mac软件解压(解压ipa或者car文件里的资源,特别是图片资源)
    https://github.com/devcxm/iOS-Images-Extractor

8.颜色相关的一些知识

8.1颜色的基本组成
  • 一种颜色由N个颜色通道组成
    颜色通道
    1个颜色通道占据8bit
    1个颜色通道的取值范围
    10进制 : [0, 255]
    16进制 : [00, ff];

  • 常见的颜色通道
    红色 red R
    绿色 green G
    蓝色 blue B
    透明度 alpha A
    R\G\B一样的是灰色

8.2颜色的种类
  • 24bit颜色
    由R\G\B组成的颜色
常见的表示形式

10进制(仅仅是用在CSS)
红色 : rgb(255,0,0)
绿色 : rgb(0,255,0)
蓝色 : rgb(0,0,255)
黄色 : rgb(255,255,0)
黑色 : rgb(0,0,0)
白色 : rgb(255,255,255)
灰色 : rgb(80,80,80)

16进制(可以用在CSS\android)
红色 : #ff0000 #f00
绿色 : #00ff00 #0f0
蓝色 : #0000ff #00f
黄色 : #ffff00 #ff0
黑色 : #000000 #000
白色 : #ffffff #fff
灰色 : #979797

  • 32bit颜色
    由R\G\B\A组成的颜色
常见的表示形式

10进制(仅仅是用在CSS)
红色 : rgba(255,0,0,255)
绿色 : rgba(0,255,0,255)
蓝色 : rgba(0,0,255,255)
黄色 : rgba(255,255,0,255)
黑色 : rgba(0,0,0,255)
白色 : rgba(255,255,255,255)

16进制(#AARRGGBB, 仅仅是用在android)
红色 : #ffff0000
绿色 : #ff00ff00
蓝色 : #ff0000ff
黄色 : #ffffff00
黑色 : #ff000000
白色 : #ffffffff

9.PCH文件可能引发的错误

(报错原因: 将pch文件的内容拷贝到非OC源代码中,如: c语言文件)
知识点总结:01-前期准备_第2张图片
Snip20151105_8.png
  • 解决方案

ifndef PrefixHeader_pch

define PrefixHeader_pch

/ 如果希望某些内容能拷贝到任何源代码文件(OC\C\C++等), 那么就不要写在#ifdef OBJC和#endif之间 /

/ 在#ifdef OBJC和#endif之间的内容, 只会拷贝到OC源代码文件中, 不会拷贝到其他语言的源代码文件中 /

ifdef OBJC

endif

/ 在#ifdef OBJC和#endif之间的内容, 只会拷贝到OC源代码文件中, 不会拷贝到其他语言的源代码文件中 /

endif

10.在Build Setting中配置宏

  • 如果项目中有些宏找不到, 可能是配置在Build Setting中(如:command + 点击, 未能跳入该宏定义文件,就可能在:Preprocessing中的Proprocessor Macros定义了该宏, 编译前宏定义, 在这里可以在调试和发布两种情况下,定义不同值的宏)
知识点总结:01-前期准备_第3张图片
Snip20151105_9.png
  • 注意点:宏的名字不能全部都是小写字母(加数字,或者变为大写都可以)

  • 如果宏的名字全部是小写, 会出现以下错误:


    知识点总结:01-前期准备_第4张图片
    Snip20151105_10.png
  • 宏定义的中,参数都要用"( )"括住,不然会出问题

11.Appearance的使用场合

  • 只要后面带有UI_APPEARANCE_SELECTOR的方法或者属性,都可以通过appearance对象统一设置
  • 比如
@interface UISwitch : UIControl 

@property(nullable, nonatomic, strong) UIColor *onTintColor NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;

@end

UISwitch *s = [UISwitch appearance];
s.onTintColor = [UIColor redColor];

12.其他配置项目时需要注意的问题

  • 创建项目时要勾选git管理, 每次开始项目时,提交一下git,下次查看项目时,着重看add和modify部分

  • 创建项目时根据需要勾选UITesting(慕课网上有具体的介绍: http://www.imooc.com/learn/560)

  • 配置好类前缀

  • 选择好使用启动图片还是lauchScreen

  • 使用人为warning

#warning 这是人为warning
  • 废弃的方法是指苹果不推荐使用,不是指方法不能用

  • 如果控制器之间有继承关系,则不建议使用Storyboard,因为Storyboard中的部分控件是不能被继承到

  • 在Scheme中选择Debug和Release模式,可以测试在两种模式下打印的情况,可通过宏定义将Release模式下的打印都替换成空,减少Release模式的性能消耗

你可能感兴趣的:(知识点总结:01-前期准备)