2013年8月16日 星期五

第四步,進入主題--令人痛恨的點--01捲軸


關於ios開發的基本東西書上大概都有,所以這邊只列出開發過程中令人痛恨卡住的地方~(雖然書上也可能有就是...)


首先最令人痛恨的第一點:畫面的捲軸


那麼什麼是捲軸呢,如圖所示:




紅色圈圈圈起來的就是捲軸了~~可以讓你的畫面上下左右移動,顯示出比你螢幕還大的區域。


再來,看看畫面是怎麼構成的,如圖所示:


這個是上一張圖的介面階層,可以看到名為"Base Scroll View",位於"View"的底下,意思是"Base Scroll View"壓在"View"上面。

順道一提,原本用storyboard拉出來的介面預設叫做Scroll View,會換個名字是因為我指定了class給該捲軸,如圖:




回到主題,我們也可以把這些介面用簡單的方式來理解,每個View、每個Button代表一張紙,不同大小的紙張疊法不同,可以看見的東西就會有所不同。


那麼捲軸令人痛恨的地方在哪呢?


人類對於看不見的東西,就必須運用想像力...就像這個捲軸,必須想像一個比手機螢幕還大好幾倍的畫面,但因為手機螢幕就這麼大,能顯示的東西有限,就像這樣:


紅色框框的範圍是捲軸畫面的大小,程式上利用setContentSize來設定大小,比如說此例設定為1600*2000 pixel。

藍色框框則是原本scroll view(Base Scroll View)的大小,這個則是利用setFrame來設定,此例為320*346 pixel。

到這裡似乎沒什麼問題,不過當大小設定好之後,其實畫面預設應該是這樣子:



兩個框框都在原點。


當在設計這個功能的時候,希望畫面一開始就在正中央,這樣使用者新增資料的時候可以往上下左右增長,這時候就要讓程式預先移動好捲軸位置,才能如上一張圖那樣。


煩人的數學計算就來啦~計時開始!


其實也沒有花很長時間啦...但這跟單純寫程式的感覺不一樣,腦袋突然被拉去另一個次元的感覺(有這麼誇張嗎?)

總之最後還是順利弄出個公式來,讓畫面可以一開始就置中,這時候要call的函式是setContentOffset


現在寫起來很簡單...但一開始不知道畫面構成是這樣、要達成目標要call哪個函式,一些「眉角」沒弄清楚(其實是很多!!寫到最後都覺得這是經驗法則了...),很容易就想偏,更不用說裡面還有沒提到的Button位置設定、畫線等等交叉計算的地方...try & error的時間也用上不少。

往後還有進階的功能:「縮放」,這部分也是不忍卒睹...請容我以後再談。



沒有留言:

張貼留言