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

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

一、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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

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