關情紙尾---UIKit基礎-控件基本屬性

最近學習做一些小項目的的思路,也了解和掌握了一些新的知識。越深入的學,越覺得學編程不容易,那些大神,真心讓我佩服。

一、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、注意
    字典轉模型的過程最好封裝在模型內(nèi)部 模型應該提供一個可以傳入字典參數(shù)的構造方法
    - (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文件就會轉為nib文件
3、要想隨意調(diào)整xib中view的尺寸,首先要設置size為Freeform
4、Xib和storyboard對比
共同點:
    都用來描述軟件界面, 都用Interface Builder工具來編輯
不同點: 
    Xib是輕量級的,用來描述局部的UI界面。
    Storyboard是重量級的,用來描述整個軟件的多個界面,并且能展示多個界面之間的跳轉關系

posted @ 2015-07-30 18:10

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • *7月8日上午 N:Block :跟一個函數(shù)塊差不多,會對里面所有的內(nèi)容的引用計數(shù)+1,想要解決就用__block...
    炙冰閱讀 2,728評論 1 14
  • 1,Search Bar 怎樣去掉背景的顏色(storyboard里只能設置background顏色,可是發(fā)現(xiàn)cl...
    以德扶人閱讀 2,879評論 2 50
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,618評論 30 472
  • iOS需要學習的內(nèi)容 UI 基礎控件: UIButton、UIImageView、UILable、UIView、U...
    cuptea閱讀 432評論 1 0
  • 每天吃著零食,看著微信,看著微博,發(fā)發(fā)朋友圈,和朋友煲電話粥,有志青年們,玩王者,看看言情小說,追追韓劇,了解了解...
    愛吃紅薯的豬嘍嘍閱讀 265評論 0 2

友情鏈接更多精彩內(nèi)容