版本適配
5、接觸過(guò)幾個(gè)iOS版本据忘,在版本兼容方面有哪些感悟鹦牛。
接觸過(guò)iOS6搞糕、iOS7、iOS8曼追、iOS9窍仰,已經(jīng)更新至iOS9。其實(shí)不管iOS是哪個(gè)版本礼殊,在蘋果設(shè)備上面的使用體驗(yàn)都不會(huì)太差驹吮。
http://www.cnblogs.com/salam/p/4344582.html ? iOS及歷史版本特性介紹
http://iphone.tgbus.com/faq/201509/20150909161107.shtml ?iOS9
5.純代碼寫布局的參數(shù)
純代碼創(chuàng)建七個(gè)參數(shù)
關(guān)于常用的手碼約束的第三方框架
有Masonry和UIView+Autolayout
框架地址是:
https://github.com/Masonry/Masonry
https://github.com/smileyborg/UIView-AutoLayout
UIView+Autolayout框架
這個(gè)相對(duì)于masonry,是個(gè)輕量級(jí)的框架易于上手晶伦,里面一共也就兩個(gè)文件碟狞。也非常好用,都是用auto開(kāi)頭婚陪。適用于約束不經(jīng)常改變的項(xiàng)目
Masonry框架
這個(gè)框架是重量級(jí)的里面好多文件族沃,難于上手,但是用熟練了的話比上面那個(gè)牛X泌参,適合于約束要經(jīng)常改變的項(xiàng)目脆淹。
16.ipone4/iphone5/iphone6/iphone6Plus的屏幕尺寸
ipone4屏幕尺寸320 x 480屏幕分辨率960x640
iphone5屏幕尺寸320 x 568屏幕分辨率640x1136
iphone6屏幕尺寸375 x 667屏幕分辨率640x1334
iphone6Plus屏幕尺寸414 x 736屏幕分辨率1080x1920
13.適配6Plus;
第1條:選用自適應(yīng)布局和通用Storyboard
第2條:開(kāi)啟全屏顯示模式與啟動(dòng)畫面文件
第3條:新一代Retina顯示屏和@3x圖片
第4條:修復(fù)位置許可
第5條:修復(fù)通知注冊(cè)
第6條:友好的二次許可請(qǐng)求
第7條:釋放Swift語(yǔ)言的力量
第8條:重要的API隱退或更新信息
第9條:新增的酷炫視覺(jué)效果
感悟:
每一次升級(jí),是對(duì)前一版系統(tǒng)的不足進(jìn)行修補(bǔ)或新功能的發(fā)布沽一。
一個(gè)項(xiàng)目(Project)可以有多個(gè)目標(biāo)(Target)盖溺,每個(gè)目標(biāo)可以指定不同的設(shè)置(例如支持不同的系統(tǒng)版本,引用不同的Framework等)铣缠。項(xiàng)目設(shè)置會(huì)覆蓋默認(rèn)設(shè)置咐柜,而每個(gè)目標(biāo)的設(shè)置則會(huì)覆蓋項(xiàng)目設(shè)置。在Xcode的項(xiàng)目瀏覽窗口中點(diǎn)擊項(xiàng)目攘残,在TARGETS中選擇某個(gè)目標(biāo),即可在右側(cè)的“Build Settings”中看到默認(rèn)設(shè)置为狸、項(xiàng)目設(shè)置歼郭、所選目標(biāo)設(shè)置與最終的設(shè)置值。
例如辐棒,當(dāng)使用Xcode 5打開(kāi)某個(gè)項(xiàng)目時(shí)病曾,Base SDK為7.0,也就是用7.0的SDK來(lái)編譯鏈接項(xiàng)目app漾根。如果這個(gè)app只想支持iOS 7系統(tǒng)泰涂,則Deployment Target可以設(shè)置為7.0。如果你的app還想兼容iOS 6或者更早版本辐怕,則應(yīng)把Deployment Target置為要支持的最低的系統(tǒng)版本號(hào)逼蒙。由此可知,Deployment Target一定小于等于Base SDK寄疏。
注意是牢,因?yàn)榇藭r(shí)是用最新的SDK生成app僵井,但卻允許在早期版本的系統(tǒng)上運(yùn)行纳鼎,所以此時(shí)開(kāi)發(fā)者要確認(rèn)在舊系統(tǒng)上運(yùn)行app時(shí)不能調(diào)用那些新的SDK中添加的功能辙纬,否則會(huì)在運(yùn)行時(shí)出錯(cuò)導(dǎo)致app閃退。下面就介紹一下如何確保app能夠在舊的系統(tǒng)上正確運(yùn)行链烈。
app在舊的系統(tǒng)上運(yùn)行的過(guò)程中社搅,可能會(huì)使用系統(tǒng)未提供的常量驻债、變量、C函數(shù)形葬、類合呐、類的方法,也可能會(huì)調(diào)用不存在的Framework中的功能荷并。對(duì)于Xcode4.6.3及更早版本合砂,程序可以編譯通過(guò),但運(yùn)行時(shí)閃退源织。Xcode 5則進(jìn)行了很大改進(jìn)翩伪,如果代碼中出現(xiàn)了上述情況,直接給出警告和錯(cuò)誤谈息。
43.iOS9的一些新功能
一缘屹、將iCloud Driver顯示在桌面
二、Siri靜音
三侠仇、選取多張照片
四轻姿、隱藏照片
五、全新的備忘錄
六逻炊、在spotlight隱藏app的搜索
七互亮、低電量模式
25.StoreBoard和純代碼編程各有什么好處?還有運(yùn)行時(shí)機(jī)制余素。
(1)StoreBoard優(yōu)點(diǎn):
效率高豹休;
Auto Layout,做適配很方便桨吊;
多語(yǔ)言很方便威根;
靜態(tài)TableView,CollectionView極其方便视乐;
最重要的是直觀洛搀,結(jié)構(gòu)清晰,一目了然佑淀!
(2)缺點(diǎn):
不適合團(tuán)隊(duì)開(kāi)發(fā)使用留美;適合大號(hào)顯示器,尤其是iPad開(kāi)發(fā)!
缺點(diǎn)解決方案:
沖突問(wèn)題:storyboard一般只是用于展示頁(yè)面布局独榴,布局不是個(gè)經(jīng)常變動(dòng)的東西僧叉,如果需要修改,修改的次數(shù)也非常的少棺榔。一般在團(tuán)隊(duì)中專門約定幾名負(fù)責(zé)人專門修改頁(yè)面布局就可以了瓶堕。如果真的需要很多人改,請(qǐng)拆分storyboard症歇。
性能問(wèn)題:性能的瓶頸真的在這里嗎郎笆?有這些時(shí)間多多優(yōu)化一下代碼,多使用異步block的效果更為明顯吧忘晤。
大型項(xiàng)目的問(wèn)題:大型項(xiàng)目中細(xì)分storyboard不僅可以解決打開(kāi)卡頓的問(wèn)題宛蚓,也會(huì)使產(chǎn)品線更為直觀。
復(fù)用問(wèn)題:storyboad的確不能復(fù)用设塔,可復(fù)用的組件可以用NIB進(jìn)行封裝凄吏,然后引入storyboad。
(3)什么時(shí)候使用storyboard闰蛔?
組織多種view的層級(jí)關(guān)系痕钢,也就是傳說(shuō)中的segue。使用一些列表或表格單元的模板的時(shí)候序六。能使用storyboard的情況下盡量用storyboard任连。
什么時(shí)候不建議使用storyboard?
動(dòng)態(tài)或復(fù)雜布局例诀,這時(shí)候可能需要用代碼來(lái)計(jì)算相關(guān)view的位置随抠。如果一個(gè)view已經(jīng)用NIB或代碼實(shí)現(xiàn)
(4)什么時(shí)候使用nib?
模態(tài)框(如登錄提示什么的)可復(fù)用視圖組件或模板
什么時(shí)候不推薦使用nib繁涂?
有動(dòng)態(tài)內(nèi)容的視圖
不方便在IB中進(jìn)行設(shè)計(jì)的試圖
(5)什么時(shí)候使用代碼拱她?
純代碼好處就是靈活,接手項(xiàng)目的時(shí)候好改扔罪。缺點(diǎn)椭懊,很明顯慢。
動(dòng)態(tài)布局
試圖特效
什么時(shí)候不推薦使用代碼步势?
什么時(shí)候使用代碼都是一個(gè)好方法,但不一定是最好的背犯。
31.有沒(méi)有做適配坏瘩?怎么做的?
純代碼可以使用masonry,可視化編程使用AutoLayout