最近學習做一些小項目的的思路,也了解和掌握了一些新的知識。越深入的學,越覺得學編程不容易,那些大神,真心讓我佩服。
一、UIButton 有三種狀態
normal(普通狀態)
默認情況 對應的枚舉常量:UIControlStateNormal
highlighted(高亮狀態)
按鈕被按下去的時候(手指還未松開) 對應的枚舉常量:UIControlStateHighlighted
disabled(失效狀態,不可用狀態)
如果enabled屬性為NO,就是處于disable狀態,代表按鈕不可以被點擊 對應的枚舉常量:UIControlStateDisabled
二、UILable的基本設置
1、要想讓UILabel自動換行,設置Lines為0即可
2、讓UILabel的文字居中顯示
<p>
三、UIButton和UIImageView的比較
相同點:
都能顯示圖片
不同點:
UIButton默認情況就能監聽點擊事件,而UIImageView默認情況下不能
UIButton可以在不同狀態下顯示不同的圖片
UIButton既能顯示文字,又能顯示圖片
如何選擇 UIButton?
需要顯示圖片,點擊圖片后需要做一些特定的操作
UIImageView:僅僅需要顯示圖片,點擊圖片后不需要做任何事情
<p>
四、NSArray和NSDictionary的使用
1、當圖片內容非常多時,“根據index來設置內容”的代碼就不具備擴展性,要經常改動 為了改變現狀,可以考慮將圖片數據保存到一個數組中,數組中有序地放著很多字典,一個字典代表一張圖片數據,包含了圖片名、圖片描述 @property (strong, nonatomic) NSArray *images;
2、由于只需要初始化一次圖片數據,因此放在get方法中初始化
3、將屬性放在get方法中初始化的方式,稱為“懶加載”\”延遲加載”
<p>
五、什么是plist文件
直接將數據直接寫在代碼里面,不是一種合理的做法。
如果數據經常改,就要經常翻開對應的代碼進行修改,造成代碼擴展性低
因此,可以考慮將經常變的數據放在文件中進行存儲,
程序啟動后從文件中讀取最新的數據。
如果要變動數據,直接修改數據文件即可,不用修改代碼
一般可以使用屬性列表文件存儲NSArray或者NSDictionary之類的數據
這種屬性列表文件的擴展名是plist,因此也成為“Plist文件”
創建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種加載方式
方式一:有緩存(圖片所占用的內存會一直停留在程序中)
+ (UIImage *)imageNamed:(NSString *)name;
name是圖片的文件名
方式二:無緩存(圖片所占用的內存會在一些特定操作后被清除)
+ (UIImage *)imageWithContentsOfFile:(NSString *)path
-(id)initWithContentsOfFile:(NSString *)path;
path是圖片的全路徑
<p>
<p>
九、用模型取代字典
1、使用字典的壞處
一般情況下,設置數據和取出數據都使用“字符串類型的key”,
編寫這些key時,編譯器不會有任何友善提示
需要手敲 dict[@"name"] = @"Jack";NSString *name = dict[@"name"];
手敲字符串key,key容易寫錯 Key如果寫錯了,編譯器不會有任何警告和報錯,
造成設錯數據或者取錯數據
2、使用模型的好處
所謂模型,其實就是數據模型,專門用來存放數據的對象,
用它來表示數據會更加專業 模型設置數據和取出數據都是通過它的屬性,
屬性名如果寫錯了,編譯器會馬上報錯,
因此,保證了數據的正確性 使用模型訪問屬性時,
編譯器會提供一系列的提示,提高編碼效率
3、注意
字典轉模型的過程最好封裝在模型內部 模型應該提供一個可以傳入字典參數的構造方法
- (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];
這個方法會創建xib中的所有對象,并且將對象按順序放到objs數組中
方法2:
bundle參數可以為nil,
默認就是main bundle UINib *nib = [UINib nibWithNibName:@"MJAppView"
bundle:[NSBundle mainBundle]];
NSArray *objs = [nib instantiateWithOwner:nil options:nil];
在開發階段,面向開發者的是xib文件; 當把應用裝到手機上時,xib文件就會轉為nib文件
3、要想隨意調整xib中view的尺寸,首先要設置size為Freeform
4、Xib和storyboard對比
共同點:
都用來描述軟件界面, 都用Interface Builder工具來編輯
不同點:
Xib是輕量級的,用來描述局部的UI界面。
Storyboard是重量級的,用來描述整個軟件的多個界面,并且能展示多個界面之間的跳轉關系
posted @ 2015-07-30 18:10