颜色通道
- 一个颜色是由N个
颜色通道
组成 - 一个颜色通道占据8bit
- 一个颜色通道的取值范围
- 十进制:[0, 255]
- 十六进制:[0x00, 0xFF]
- 常见的颜色通道
- Red
- Green
- Blue
- Alpha
颜色的类型 - 24bit颜色
- 由RGB三个颜色通道组成
- 表示形式
- 十进制(格式:R,G,B)
- 红色:255,0,0
- 蓝色:0,0,255
- 绿色:0,255,0
- 白色:255,255,255
- 黑色:0,0,0
- 灰色:x,x,x(RGB一样)
- 十六进制(格式:#RRGGBB)
- 红色:#FF0000
- 蓝色:#0000FF
- 绿色:#00FF00
- 白色:#FFFFFF
- 黑色:#000000
- 灰色:#ABABAB(RGB一样)
- 特殊情况
- 如果1和2同 , 3和4同 , 5和6同,可以缩写
- 比如#66AA44,可以缩写为#6A4
- 十进制(格式:R,G,B)
颜色的类型 - 32bit颜色
- 由RGBA四个颜色通道组成
- 表示形式
- 十进制(格式:R,G,B,A)
- 红色:255,0,0,255
- 蓝色:0,0,255,255
- 绿色:0,255,0,255
- 白色:255,255,255,255
- 黑色:0,0,0,255
- 灰色:x,x,x,255(RGB一样)
- 十六进制(用在Android平台,格式为#AARRGGBB)
- 红色:#FFFF0000
- 蓝色:#FF0000FF
- 绿色:#FF00FF00
- 白色:#FFFFFFFF
- 黑色:#FF000000
- 灰色:#FFABABAB(RGB一样)
- 十进制(格式:R,G,B,A)
Appearance
- 只要方法名或者属性名后面带有UI_APPEARANCE_SELECTOR这个宏,就可以通过[XXX appearance]对象来统一设置
- 比如
UINavigationBar *nav = [UINavigationBar appearance];
[nav setBackgroundImage:[UIImage imageNamed:@"defaultUserIcon"] forBarMetrics:UIBarMetricsDefault];
UINavigationBar *nav1 = [[UINavigationBar alloc] init];
// [nav1 setBackgroundImage:[UIImage imageNamed:@"defaultUserIcon"] forBarMetrics:UIBarMetricsDefault];
UINavigationBar *nav2 = [[UINavigationBar alloc] init];
// [nav2 setBackgroundImage:[UIImage imageNamed:@"defaultUserIcon"] forBarMetrics:UIBarMetricsDefault];
UINavigationBar *nav3 = [[UINavigationBar alloc] init];
// [nav3 setBackgroundImage:[UIImage imageNamed:@"defaultUserIcon"] forBarMetrics:UIBarMetricsDefault];
字典中的文字属性key
- iOS7之前 : UITextAttributeXXX, 可以在UIStringDrawing.h中找到
- iOS7开始 : NSXXXAttributeName, 可以在NSAttributedString.h中找到
- 比如
// 设置normal状态下的文字属性
NSMutableDictionary *normalAttrs = [NSMutableDictionary dictionary];
normalAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:13];
normalAttrs[NSForegroundColorAttributeName] = [UIColor grayColor];
UITabBarItem *item = [UITabBarItem appearance];
[item setTitleTextAttributes:normalAttrs forState:UIControlStateNormal];
// 以后看到attributes和NSDictionary,就是从NSAttributedString.h文件中查找key
iOS新技术更新的小规律
- iOS8出了新框架Abc.framework, 完全可以取代以前的MapKit.framework
- iOS9开始不推荐使用MapKit.framework,建议使用Abc.framework
DEBUG宏的位置
- 在Preprocessing中定义的宏名字,不能全都是小写字母。不然会出现以下错误:
出现以下错误,是因为在C\C++源代码文件中使用了OC的东西
PCH的书写注意
/**** 在#ifdef __OBJC__和#endif之间的内容,只会出现在OC的源代码文件中 ****/
// 如果是OC源代码文件
#ifdef __OBJC__
#define XMGHeight 200
#endif
/**** 在#ifdef __OBJC__和#endif之间的内容,只会出现在OC的源代码文件中 ****/
#define XMGAge 20
// XMGHeight这个宏,只会出现在OC的源代码文件中
// XMGAge这个宏,会出现在这个项目的所有源代码文件中
UIImage可能会带来的警告
- [UIImage imageNamed:nil]
- CUICatalog: Invalid asset name supplied: (null)
- [UIImage imageNamed:@”“]
- CUICatalog: Invalid asset name supplied:
分类的使用注意
- 分类的方法名和属性名前面最好带有项目前缀
@interface UIView (XMGExtension)
@property (nonatomic, assign) CGFloat xmg_width;
@property (nonatomic, assign) CGFloat xmg_height;
@property (nonatomic, assign) CGFloat xmg_x;
@property (nonatomic, assign) CGFloat xmg_y;
@end
属性在@interface中的作用
- 类的声明定义
@interface XMGUser : NSObject
@property (nonatomic, assign) CGFloat xmg_width;
/**
1.方法声明
- (CGFloat)xmg_width;
- (void)setXmg_width:(CGFloat)xmg_width;
2.下划线开头的成员变量 CGFloat _xmg_width
3.方法实现
- (CGFloat)xmg_width {
return _xmg_width;
}
- (void)setXmg_width:(CGFloat)xmg_width
{
_xmg_width = xmg_width;
}
*/
@end
- 类扩展
@interface XMGUser ()
@property (nonatomic, assign) CGFloat xmg_width;
/**
1.方法声明
- (CGFloat)xmg_width;
- (void)setXmg_width:(CGFloat)xmg_width;
2.下划线开头的成员变量 CGFloat _xmg_width
3.方法实现
- (CGFloat)xmg_width {
return _xmg_width;
}
- (void)setXmg_width:(CGFloat)xmg_width
{
_xmg_width = xmg_width;
}
*/
@end
- 分类
@interface XMGUser (Extension)
@property (nonatomic, assign) CGFloat xmg_width;
/**
方法声明
- (CGFloat)xmg_width;
- (void)setXmg_width:(CGFloat)xmg_width;
*/
@end