<h4>同一圖像的不同分辨率的資源</h4><p>因?yàn)槿缃駃OS設(shè)備眾多擒悬,不同的設(shè)備具有不同的分辨率枉层。為同一圖像提供多個(gè)分辨率的版本可以使應(yīng)用載入最適配的資源闻察。</p>
下面我們通過一個(gè)實(shí)驗(yàn)來理解各種分辨率的使用和異同纬纪。
我PS了一個(gè)120x150的png圖像文件揍移,以其為藍(lán)本生成了8個(gè)文件如下览濒。
lion1.png lion2@2x.png lion3@3x.png
lion12.png lion12@2x.png
lion123.png lion123@2x.png lion123@3x.png
所有文件的分辨率都相同呆盖,@2x版本和@3x版本的圖像上分別有數(shù)字2或3
新建一個(gè)project, 將上述8個(gè)文件拖入Asssets.xcassets 得到結(jié)果如下
文件名中的數(shù)字表明該文件有對(duì)應(yīng)分辨率的版本
打開Main.storyboard。創(chuàng)建5個(gè)image view贷笛,大小設(shè)為120x150应又,content mode 設(shè)為 top。
分別選擇view as iPhone7 和 view as iPhone7 Plus 得到如下圖中的結(jié)果乏苦。
屏幕的方向不影響結(jié)果株扛。除iPhone 7Plus外,其余情況下(包括pad)顯示結(jié)果相同汇荐。當(dāng)然這里也不包含非retina屏的情況了洞就。
<h4>總結(jié):</h4><p>非plus的情況下,首選@2x分辨率掀淘,沒有@2x 則選正常分辨率但不會(huì)使用@3x版本旬蟋。
plus的情況下,首選@3x分辨率革娄,沒有選@2x,還沒有則選正常分辨率
所以@2x版本的資源是必須要提供的倾贰。提供@3x資源可以更好地適配iPone plus. 正常分辨率的可以忽略了。</p>
<h4>一個(gè)典型的應(yīng)用 lazy 初始化的情況 </h4><pre>
private var asteroidField: AsteroidFieldView!
private lazy var animator: UIDynamicAnimator = UIDynamicAnimator(referenceView: self.asteroidField)
</pre>
<p><code>animator</code> 初始化時(shí)引用了另一個(gè)成員<code>asteroidField</code>拦惋,需要使用lazy 并顯示指明類型<code>UIDynamicAnimator</code> 而且還要明確<code>asteroidField</code>是類成員還是實(shí)例成員(用<code>self.</code>限定)</p>
<h4>本講的演示略匆浙。</h4>
這個(gè)演示是一個(gè)游戲場(chǎng)景。但同樣的事情更適合用spritKit實(shí)現(xiàn)厕妖。這種動(dòng)態(tài)動(dòng)畫更適合的場(chǎng)景應(yīng)該是那種炫酷的場(chǎng)景(view)間的切換首尼。 有機(jī)會(huì)要試試。再補(bǔ)充本節(jié)的內(nèi)容。