iOS知識點(diǎn)總結(jié)(一)

iOS需要學(xué)習(xí)的內(nèi)容

UI

  • 基礎(chǔ)控件: UIButton、UIImageView、UILable、UIView乎完、UISlider等
  • 高級控件: UITableView、UICollectionView等
  • 屏幕適配: Autoresizing品洛、Autolayout囱怕、Sizeclass、Masonry
  • 多控制器管理: UINavigationController毫别、UITabBarController娃弓、自定義控制器管理
  • Quartz2D、核心動畫岛宦、事件處理台丛、手勢、UIDynamic

多線程網(wǎng)絡(luò)

  • NSThread砾肺、NSoperation挽霉、GCD
  • Socket、TCP/IP
  • 網(wǎng)絡(luò)安全变汪、加密算法侠坎、HTTPS
  • NSURLConnection、NSURLSession裙盾、UIWebView
  • AFNetWorking实胸、SDWebImage他嫡、MJRefresh、MJExtension

HTML5

  • HTML庐完、CSS钢属、JavaScript
  • 響應(yīng)式布局、BootStrap门躯、jQuery淆党、jQuery-Mobile
  • HTML5 + Native混合開發(fā)

實(shí)用技術(shù)

  • plist存儲、NSCoding讶凉、SQLite染乌、CoreData
  • 音頻、視頻懂讯、流媒體荷憋、濾鏡處理、拍照域醇、相冊、訊飛語音
  • 推送蓉媳、加速計(jì)譬挚、單元測試、靜態(tài)庫酪呻、第三方登錄
  • App Extensions减宣、炫酷動畫特效、地圖定位
  • 二維碼玩荠、正則表達(dá)式漆腌、打包發(fā)布程序
  • 瀑布流、自定義UICollecitonViewLayout
  • svn阶冈、git闷尿、github、CocoaPods
  • 社交分享女坑、應(yīng)用統(tǒng)計(jì)填具、硬件信息獲取(內(nèi)存匆骗、CPU等)
  • 第三方支付劳景、內(nèi)購、通訊錄

UIView的常見是屬性

  • 獲得自己的父控件對象
@property(nonatomic,readOnly) UIView *superView;
  • 獲得自己的所有子對象
@property(nonatomic,readOnly,copy) NSArray *subviews;
  • 控件的標(biāo)識父控件可以通過tag來找到對應(yīng)的子控件
@property(nonatomic)NSInteger tag
  • 控件的形變屬性,可設(shè)置旋轉(zhuǎn)角度,比例縮放,平移等屬性
@property(nonatomic)CGAffineTransform transform
  • 添加一個(gè)子控件view
 - (void)addSubview: (UIView *)view;
  • 從父控件中移除
 - (void)removeFromSuperView;
  • 根據(jù)一個(gè)tag標(biāo)識找出對應(yīng)的控件(一般都是子控件)
 - (UIView *)viewWithTag:(NSInteger)tag;
  • 控件矩形框在父控件中的位置和尺寸(以父控件左上角為坐標(biāo)原點(diǎn))
@property(nonatomic) CGRect frame;
  • 控件矩形框的位置和尺寸(以自己的左上角為坐標(biāo)原點(diǎn),所以bounds的x/y一般為0)
@property(nonatomic) CGRect bounds;
  • 控件中心點(diǎn)的位置(以父控件左上角為坐標(biāo)原點(diǎn))
@property(nonatomic) CGPoint center;

UI控件概覽

  • UIButton 按鈕 ----監(jiān)聽用戶的點(diǎn)擊,在用戶點(diǎn)擊后做出響應(yīng)
  • UILabel 文本標(biāo)簽 ----顯示一串固定的文字
  • UITextField 文本輸入框 ----可以彈出鍵盤,讓用戶輸入文本內(nèi)容
  • UIImageView 圖片顯示
  • UIScrollView 滾動的控件----如果內(nèi)容較多,超出了一個(gè)屏幕的寬度,就用它來顯示
  • UITableView 表格----如果每一行顯示的內(nèi)容格式差不多,就用這個(gè)表格控件
  • UICollectionView 九宮格----顯示的東西是一格一格的,就用這個(gè)
  • UIWebView 網(wǎng)頁顯示控件----使用它就可以在手機(jī)上瀏覽網(wǎng)頁
  • UIAlertView 中間彈框----從屏幕中間彈出一個(gè)框,提示用戶下一步怎么做
  • UINavigationBar 導(dǎo)航條----顯示在頂部的條
  • UIPageControl 分頁控制----能顯示當(dāng)前的頁碼
  • UITextView 能滾動的文字顯示控件----文字較多,可以換行,可以編輯
  • UIActivityIndicator 圈圈----表示讓用戶等待
  • UISwitch 開關(guān)
  • UIActionSheet 底部彈框----從屏幕底部彈出一個(gè)框,提示用戶
  • UIDatePicker 日期選擇器
  • UIToolBar 工具條----一般顯示在底部或者鍵盤頂部,里面有幾個(gè)小按鈕
  • UIProgressView 進(jìn)度條----水平進(jìn)度條,如顯示下載進(jìn)度,程序啟動進(jìn)度
  • UISlider 滑塊----在兩個(gè)豎直之間滑動選擇,如音量/亮度選擇
  • UISegmentControl 選項(xiàng)卡----在幾個(gè)固定選項(xiàng)中進(jìn)行選擇
  • UIPickerView 選擇器----在多行數(shù)據(jù)中選擇一行

什么是UIImageView

  • UIKit框架提供了很多UI控件,有的不常用,有的非常常用,如:UIButton/UILabel/UIImageView/UITableView等
  • UIImageView極其常用,功能比較單一:顯示圖片

什么是UILabel

  • UILabel極其常用,功能比較單一:顯示文字

什么是按鈕

  • 一般情況下,點(diǎn)擊某個(gè)控件后,會做出相應(yīng)反應(yīng)的都是按鈕
  • 按鈕的功能比較多,既能顯示文字,也能顯示圖片,還能隨時(shí)調(diào)整內(nèi)部文字和圖片的位置

按鈕的設(shè)置

UIButton的狀態(tài)

  • normal 普通狀態(tài),對應(yīng)的枚舉常量:UIControlStateNormal
  • highlighted 高亮狀態(tài),對應(yīng)的枚舉常量:UIControlStateHighlighted
  • disabled 失效狀態(tài),對應(yīng)的枚舉常量:UIControlStateDisabled

設(shè)置按鈕的背景圖片

  • 設(shè)置按鈕在不同狀態(tài)下的背景圖片(為保證高亮狀態(tài)下的圖片正常顯示,按鈕的style必須為custom)

按鈕的樣式

  • 實(shí)際上按鈕自帶了很多不同的樣式
  • 在用代碼創(chuàng)建按鈕時(shí)同時(shí)指定按鈕的樣式
UIButton *btn = [UIButton buttonWithType: UIButtonTypeCustom];
UIButtonTypeCustom:無類型,按鈕的內(nèi)容需要自定義
UIButtonTypeDetailDiscloure
UIButtonTypeInfoLight
UIButtonTypeInfoDark
UIButtonTypeContactAdd

UIButton的常見設(shè)置

  • 設(shè)置按鈕的文字
 -(void)setTitle:(NSString *)title forState:(UIControlState *)state;
  • 設(shè)置按鈕文字的顏色
 -(void)setTitleColor:(UIColor *)color forState:(UIControlState *)state;
  • 設(shè)置按鈕內(nèi)部的小圖片
 -(void)setImage:(UIImage *)image forState:(UIControlState *)state;
  • 設(shè)置按鈕的背景顏色
 -(void)setBackgroundImage:(UIImage *)image forState:(UIControlState *)state;
  • 設(shè)置按鈕的文字字體
 btn.titleLabel.font = [UIFont  systemFontOfSize:13];
  • 獲得按鈕的文字
 -(NSString *)titleForState:(UIControlState)state;
  • 獲得按鈕的文字顏色
 -(UIColor *)titleColorForState:(UIControlState)state;
  • 獲得按鈕的內(nèi)部小圖片
 -(UIImage *)imageForState:(UIControlState)state;
  • 獲得按鈕的背景圖片
 -(UIImage *)backgroundImageForState:(UIControlState)state;

代碼創(chuàng)建按鈕

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]
[btn setBackgroundImage:[UIImage imageNamed:"btn_01"] forState:UIControlStateNormal]
[btn setTitle:"點(diǎn)我啊" forState:UIControlStateNormal]
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal]

九宮格計(jì)算思路

plist文件

  • 什么是plist文件

  • 直接將數(shù)據(jù)寫在代碼里面,不是一種合理的做法,如果數(shù)據(jù)經(jīng)常改動,代碼也就需要經(jīng)常改動,造成代碼的擴(kuò)展性低;

  • 因此,可以考慮將經(jīng)常變動的數(shù)據(jù)放在文件中存儲,程序啟動后從文件中讀取最新的數(shù)據(jù),如果數(shù)據(jù)要變,只需要修改文件,不需要修改代碼;

  • 一般可以使用屬性列表文件存儲NSArray和NSDictionary之類的數(shù)據(jù),這種"屬性列表文件"的擴(kuò)展名是plist,因此稱之為plist文件

  • 創(chuàng)建plist文件

  • 解析plist文件

1.獲得plist文件的全路徑
 NSString *path = [[NSBundle MainBundle] pathForResource:@"shops" ofType:@"plist"]
 2.加載plist文件
 self.shops = [NSArray arrayWithContentOfFile:path];
  • plist文件名不能叫做"info""Info"

用模型取代字典的好處

  • 使用字典的壞處:一般情況下,設(shè)置數(shù)據(jù)和取出數(shù)據(jù)都要使用"字符串類型key",編寫這些key時(shí),編譯器沒有自動提示,如果寫錯(cuò)了也不會有任何的報(bào)警和錯(cuò)誤
  • 使用模型的好處:
    1.所謂模型,其實(shí)就是數(shù)據(jù)模型,專門用來存放數(shù)據(jù)的對象,用它來表示數(shù)據(jù)會更加專業(yè)
    2.模型設(shè)置數(shù)據(jù)和取出數(shù)據(jù)都是通過它的屬性,編譯器可以監(jiān)測是否正確
    3.使用模型訪問屬性時(shí),編譯器會有智能提示,提高代碼書寫效率
  • 字典轉(zhuǎn)模型
  • 字典轉(zhuǎn)模型的過程最好封裝在模型內(nèi)部
  • 模型應(yīng)該提供一個(gè)可以傳入字典參數(shù)的構(gòu)造方法
 -(instancetype)initWithDict(NSDictionary *)dict;
 +(instancetype)xxxWithDict(NSDcitionary *)dict;
  • instancetype
    1.instancetype在類型上表示上,跟id一樣,可以表示任何對象類型
    2.instancetype只能用在返回值上,不能像id一樣用在參數(shù)類型上
    3.instancetype比id多一個(gè)好處,編譯器會監(jiān)測instancetype的真實(shí)類型

view的封裝

  • 如果一個(gè)view的內(nèi)部子控件比較多,一般會考慮自定義一個(gè)view,把它內(nèi)部的子控件的創(chuàng)建封裝起來,不讓外界關(guān)心
  • 外界可以傳入對應(yīng)的模型給view,view拿到模型后將數(shù)據(jù)展示到響應(yīng)的子控件身上
  • 封裝控件的基本步驟
    1.在initWithFrame:方法中添加子控件,提供便利構(gòu)造方法
    2.在layoutSubviews方法中設(shè)置自控件的frame,一定要調(diào)用父類layoutSubviews
    3.增加模型屬性,在模型屬性的set方法中設(shè)置數(shù)據(jù)到子控件上

簡單的MVC

  • controller 控制器/大管家
  • view 視圖顯示
  • model 數(shù)據(jù)模型/數(shù)據(jù)

xib和storyboard的對比

  • 共同點(diǎn)
    1.都是用來描述軟件界面
    2.都用Interface builder工具來編輯
    3.本質(zhì)都是轉(zhuǎn)為代碼去創(chuàng)建控件
  • 不同點(diǎn)
    1.xib是輕量級的,用來描述局部UI界面
    2.storyboard是重量級的,用來描述整個(gè)UI界面,并能描述多個(gè)界面之間的跳轉(zhuǎn)關(guān)系

xib的加載

  • 方法一
NSArray *views = [[NSBundle MainBundle] loadNibNamed:@"xib name" owner:nil, options: nil]
  • 方法二
UINib *nib = [UINib nibWithNibName:@"" bundle: nil]
NSArray *view = [nib instantiateWithOwner:nil options: nil]

使用xib自定義view

  • 新建自定義控件類
  • 新建xib文件,建議文件名與view的類名一致
  • 修改xib中view的類名
  • 封裝xib的加載過程
+ (instancetype)shopView
{
    return [[[NSBundle MainBundle] loadNibNamed:@"" owner:nil options: nil] lastObject];
}
  • 增加模型屬性,在模型屬性的set方法中設(shè)置數(shù)據(jù)到子控件中
  • 注意點(diǎn)
  • 一個(gè)控件有兩種創(chuàng)建方式
    • 通過代碼創(chuàng)建:初始化時(shí)一定會調(diào)用initWithFrame:方法
  • 通過xib/storyboard創(chuàng)建
    • 初始化時(shí)不會調(diào)用initWithFrame:方法,之后調(diào)用initWithCoder:方法
    • 初始化完畢后會調(diào)用awakeFromNib方法
  • 有時(shí)候希望在控件初始化的時(shí)候做一些初始化操作,比如添加子控件,設(shè)置基本屬性
    • 這時(shí)候需要根據(jù)控件的常見方式來選擇在哪個(gè)方法中操作

UIImage

UIImage *image = [UIImage imageNamed:@""];

UILabel

  • UILable的基本設(shè)置
  - @property(nonatomic,copy) NSString *text;
  - @property(nonatomic,retain) UIFont *font;
  - @property(nonatomic,retain) UIColor *textColor;
  - @property(nonaotomic) NSTextAlignMent textAlignMent;

UIFont

+(UIFont *)systemFontOfSize:(CGFloat)fontSize;//系統(tǒng)默認(rèn)字體
+(UIFont *)boldSystemFontOfSize:(CGFloat)fontSize;//粗體
+(UIFont *)italicSystemFontOfSize:(CGFloat)fontSize;//斜體

UIButton/UIImageView/UILabel的選擇

  • 功能夠用即可,建議不選擇復(fù)雜的控件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碉就,一起剝皮案震驚了整個(gè)濱河市盟广,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓮钥,老刑警劉巖筋量,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烹吵,死亡現(xiàn)場離奇詭異,居然都是意外死亡毛甲,警方通過查閱死者的電腦和手機(jī)年叮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玻募,“玉大人只损,你說我怎么就攤上這事∑哌郑” “怎么了跃惫?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長艾栋。 經(jīng)常有香客問我爆存,道長,這世上最難降的妖魔是什么蝗砾? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任先较,我火速辦了婚禮,結(jié)果婚禮上悼粮,老公的妹妹穿的比我還像新娘闲勺。我一直安慰自己,他們只是感情好扣猫,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布菜循。 她就那樣靜靜地躺著,像睡著了一般申尤。 火紅的嫁衣襯著肌膚如雪癌幕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天昧穿,我揣著相機(jī)與錄音勺远,去河邊找鬼。 笑死时鸵,一個(gè)胖子當(dāng)著我的面吹牛谚中,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寥枝,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼宪塔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了囊拜?” 一聲冷哼從身側(cè)響起某筐,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冠跷,沒想到半個(gè)月后南誊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體身诺,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年抄囚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了霉赡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡幔托,死狀恐怖穴亏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情重挑,我是刑警寧澤嗓化,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站谬哀,受9級特大地震影響刺覆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜史煎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一谦屑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧篇梭,春花似錦氢橙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隧枫。三九已至喉磁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間官脓,已是汗流浹背协怒。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卑笨,地道東北人孕暇。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像赤兴,于是被迫代替她去往敵國和親妖滔。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容