//使用字典的壞處
//通常狀況下,設置數據和取出數據都使用「字符串類型的key」,編寫這些key時,編譯器不會有任何友善提示,須要手敲
//dict[@"name"] = @"Jack";
//NSString *name = dict[@"name"];
//手敲字符串key,key容易寫錯
//Key若是寫錯了,編譯器不會有任何警告和報錯,形成設錯數據或者取錯數據
//
//使用模型的好處
//所謂模型,其實就是數據模型,專門用來存放數據的對象,用它來表示數據會更加專業
//模型設置數據和取出數據都是經過它的屬性,屬性名若是寫錯了,編譯器會立刻報錯,所以,保證了數據的正確性
//使用模型訪問屬性時,編譯器會提供一系列的提示,提升編碼效率
app.name = @"Jack」;
NSString *name = app.name;數組
//字典轉模型
//字典轉模型的過程最好封裝在模型內部app
//模型應該提供一個能夠傳入字典參數的構造方法
- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)xxxWithDict:(NSDictionary *)dict;工具
instancetype在類型表示上,跟id同樣,能夠表示任何對象類型字體
instancetype只能用在返回值類型上,不能像id同樣用在參數類型上ui
instancetype比id多一個好處:編譯器會檢測instancetype的真實類型編碼
xib的文件使用atom
//Xib文件能夠用來描述某一塊局部的UI界面對象
//Xib文件的加載
//方法1
NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@」CZAppView" owner:nil options:nil];
// 這個方法會建立xib中的全部對象,而且將對象按順序放到objs數組中
// (若是xib如右圖所示,那麼objs數組中依次會有3個對象:1個UIView、1個UIButton、1個UISwitch)
// 方法2
bundle參數能夠爲nil,默認就是main bundle
UINib *nib = [UINib nibWithNibName:@」CZAppView" bundle:[NSBundle mainBundle]];
NSArray *objs = [nib instantiateWithOwner:nil options:nil];
// 在開發階段,面向開發者的是xib文件; 當把應用裝到手機上時,xib文件就會轉爲nib文件
xib和storyBoard對比
共同點:
都用來描述軟件界面
都用Interface Builder工具來編輯圖片
不一樣點
Xib是輕量級的,用來描述局部的UI界面
Storyboard是重量級的,用來描述整個軟件的多個界面,而且能展現多個界面之間的跳轉關係開發
view的封裝
若是一個view內部的子控件比較多,通常會考慮自定義一個view,把它內部子控件的建立屏蔽起來,不讓外界關心
外界能夠傳入對應的模型數據給view,view拿到模型數據後給內部的子控件設置對應的數據
UIlabel的常見設置
@property(nonatomic,copy) NSString *text;
顯示的文字
@property(nonatomic,retain) UIFont *font;
字體
@property(nonatomic,retain) UIColor *textColor;
文字顏色
@property(nonatomic) NSTextAlignment textAlignment;
對齊模式(好比左對齊、居中對齊、右對齊)
UIfont
UIFont表明字體,常見建立方法有如下幾個:
+ (UIFont *)systemFontOfSize:(CGFloat)fontSize; 系統默認字體
+ (UIFont *)boldSystemFontOfSize:(CGFloat)fontSize; 粗體
+ (UIFont *)italicSystemFontOfSize:(CGFloat)fontSize; 斜體
UIbutton的常見設置
- (void)setTitle:(NSString *)title forState:(UIControlState)state;
設置按鈕的文字
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state;
設置按鈕的文字顏色
- (void)setImage:(UIImage *)image forState:(UIControlState)state;
設置按鈕內部的小圖片
- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state;
設置按鈕的背景圖片
設置按鈕的文字字體(須要拿到按鈕內部的label來設置)
btn.titleLabel.font = [UIFont systemFontOfSize:13];
- (NSString *)titleForState:(UIControlState)state;
得到按鈕的文字
- (UIColor *)titleColorForState:(UIControlState)state;
得到按鈕的文字顏色
- (UIImage *)imageForState:(UIControlState)state;
得到按鈕內部的小圖片
- (UIImage *)backgroundImageForState:(UIControlState)state; 得到按鈕的背景圖片