知识点总结: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文件中配置


    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.项目的图片资源

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语言文件)
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定义了该宏, 编译前宏定义, 在这里可以在调试和发布两种情况下,定义不同值的宏)
Snip20151105_9.png
  • 注意点:宏的名字不能全部都是小写字母(加数字,或者变为大写都可以)

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


    Snip20151105_10.png
  • 宏定义的中,参数都要用"( )"括住,不然会出问题

11.Appearance的使用场合

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

@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模式的性能消耗

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 从iOS9开始的常见报错 从iOS9开始, 在程序启动完毕那一刻显示出来的窗口必须要设置根控制器 应用程序的图标 ...
    kangyiii阅读 382评论 0 2
  • 从iOS9开始的常见报错 从iOS9开始, 在程序启动完毕那一刻显示出来的窗口必须要设置根控制器 应用程序的图标 ...
    小吖朱阅读 180评论 0 1
  • 从iOS9开始的常见报错 从iOS9开始, 在程序启动完毕那一刻显示出来的窗口必须要设置根控制器 有些图片显示出来...
    凡尘一笑阅读 722评论 0 0
  • 从iOS9开始的常见报错 从iOS9开始, 在程序启动完毕那一刻显示出来的窗口必须要设置根控制器 应用程序的图标 ...
    阿拉斯加的狗阅读 387评论 0 2
  • 从iOS9开始的常见报错 从iOS9开始, 在程序启动完毕那一刻显示出来的窗口必须要设置根控制器 应用程序的图标 ...
    lonelyjimmy阅读 235评论 0 0