最近學習做一些小項目的的思路解藻,也了解和掌握了一些新的知識。越深入的學葡盗,越覺得學編程不容易螟左,那些大神,真心讓我佩服。
一胶背、UIButton 有三種狀態(tài)
normal(普通狀態(tài))
默認情況 對應的枚舉常量:UIControlStateNormal
highlighted(高亮狀態(tài))
按鈕被按下去的時候(手指還未松開) 對應的枚舉常量:UIControlStateHighlighted
disabled(失效狀態(tài)巷嚣,不可用狀態(tài))
如果enabled屬性為NO,就是處于disable狀態(tài)钳吟,代表按鈕不可以被點擊 對應的枚舉常量:UIControlStateDisabled
二廷粒、UILable的基本設置
1、要想讓UILabel自動換行砸抛,設置Lines為0即可
2评雌、讓UILabel的文字居中顯示
<p>
三树枫、UIButton和UIImageView的比較
相同點:
都能顯示圖片
不同點:
UIButton默認情況就能監(jiān)聽點擊事件直焙,而UIImageView默認情況下不能
UIButton可以在不同狀態(tài)下顯示不同的圖片
UIButton既能顯示文字,又能顯示圖片
如何選擇 UIButton?
需要顯示圖片砂轻,點擊圖片后需要做一些特定的操作
UIImageView:僅僅需要顯示圖片奔誓,點擊圖片后不需要做任何事情
<p>
四、NSArray和NSDictionary的使用
1搔涝、當圖片內(nèi)容非常多時厨喂,“根據(jù)index來設置內(nèi)容”的代碼就不具備擴展性,要經(jīng)常改動 為了改變現(xiàn)狀庄呈,可以考慮將圖片數(shù)據(jù)保存到一個數(shù)組中蜕煌,數(shù)組中有序地放著很多字典,一個字典代表一張圖片數(shù)據(jù)诬留,包含了圖片名斜纪、圖片描述 @property (strong, nonatomic) NSArray *images;
2、由于只需要初始化一次圖片數(shù)據(jù)文兑,因此放在get方法中初始化
3盒刚、將屬性放在get方法中初始化的方式,稱為“懶加載”\”延遲加載”
<p>
五绿贞、什么是plist文件
直接將數(shù)據(jù)直接寫在代碼里面因块,不是一種合理的做法。
如果數(shù)據(jù)經(jīng)常改籍铁,就要經(jīng)常翻開對應的代碼進行修改涡上,造成代碼擴展性低
因此,可以考慮將經(jīng)常變的數(shù)據(jù)放在文件中進行存儲拒名,
程序啟動后從文件中讀取最新的數(shù)據(jù)吩愧。
如果要變動數(shù)據(jù),直接修改數(shù)據(jù)文件即可靡狞,不用修改代碼
一般可以使用屬性列表文件存儲NSArray或者NSDictionary之類的數(shù)據(jù)
這種屬性列表文件的擴展名是plist耻警,因此也成為“Plist文件”
創(chuàng)建plist文件
<p>
六、解析 image.plist
獲得Plist文件的全路徑
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource:@"imageData" ofType:@"plist"];
加載plist文件 _images = [NSArray arrayWithContentsOfFile:path];
- (NSArray *)images{
if (_images == nil) {
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource:@"imageData" ofType:@"plist"];
_images = [NSArray arrayWithContentsOfFile:path];
}
return _images;
}
<p>
七、UIView 的常見屬性
以父控件的左上角為坐標原點
@property(nonatomic) CGRect frame;控件所在矩形框在父控件中的位置和尺寸
以自己左上角為坐標原點甘穿,所以bounds的x\y一般為0
@property(nonatomic) CGRect bounds; 控件所在矩形框的位置和尺寸
以父控件的左上角為坐標原點
@property(nonatomic) CGPoint center; 控件中點的位置
<p>
<p>
八腮恩、UIImage的2種加載方式
方式一:有緩存(圖片所占用的內(nèi)存會一直停留在程序中)
+ (UIImage *)imageNamed:(NSString *)name;
name是圖片的文件名
方式二:無緩存(圖片所占用的內(nèi)存會在一些特定操作后被清除)
+ (UIImage *)imageWithContentsOfFile:(NSString *)path
-(id)initWithContentsOfFile:(NSString *)path;
path是圖片的全路徑
<p>
<p>
九、用模型取代字典
1温兼、使用字典的壞處
一般情況下秸滴,設置數(shù)據(jù)和取出數(shù)據(jù)都使用“字符串類型的key”,
編寫這些key時募判,編譯器不會有任何友善提示
需要手敲 dict[@"name"] = @"Jack";NSString *name = dict[@"name"];
手敲字符串key荡含,key容易寫錯 Key如果寫錯了,編譯器不會有任何警告和報錯届垫,
造成設錯數(shù)據(jù)或者取錯數(shù)據(jù)
2释液、使用模型的好處
所謂模型,其實就是數(shù)據(jù)模型装处,專門用來存放數(shù)據(jù)的對象误债,
用它來表示數(shù)據(jù)會更加專業(yè) 模型設置數(shù)據(jù)和取出數(shù)據(jù)都是通過它的屬性,
屬性名如果寫錯了妄迁,編譯器會馬上報錯寝蹈,
因此,保證了數(shù)據(jù)的正確性 使用模型訪問屬性時登淘,
編譯器會提供一系列的提示箫老,提高編碼效率
3、注意
字典轉(zhuǎn)模型的過程最好封裝在模型內(nèi)部 模型應該提供一個可以傳入字典參數(shù)的構(gòu)造方法
- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)xxxWithDict:(NSDictionary *)dict;
十黔州、xib文件的介紹和使用
1耍鬓、Xib文件可以用來描述某一塊局部的UI界面
2、Xib文件的加載
方法1:
NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"TUAppView" owner:nil options:nil];
這個方法會創(chuàng)建xib中的所有對象辩撑,并且將對象按順序放到objs數(shù)組中
方法2:
bundle參數(shù)可以為nil界斜,
默認就是main bundle UINib *nib = [UINib nibWithNibName:@"MJAppView"
bundle:[NSBundle mainBundle]];
NSArray *objs = [nib instantiateWithOwner:nil options:nil];
在開發(fā)階段,面向開發(fā)者的是xib文件; 當把應用裝到手機上時,xib文件就會轉(zhuǎn)為nib文件
3、要想隨意調(diào)整xib中view的尺寸合冀,首先要設置size為Freeform
4各薇、Xib和storyboard對比
共同點:
都用來描述軟件界面, 都用Interface Builder工具來編輯
不同點:
Xib是輕量級的君躺,用來描述局部的UI界面峭判。
Storyboard是重量級的,用來描述整個軟件的多個界面棕叫,并且能展示多個界面之間的跳轉(zhuǎn)關(guān)系
posted @ 2015-07-30 18:10