45小時.iOS App學習之七:AutoLay Out&代理人機制

本次課程繼續AutoLayout之路,原本以為AutoLayout就是把東西擺上去,弄幾個簡單的條件,按個按鈕,就「自動」咻咻咻~~~然後各個原件會跑到自己的位置,結果就是~~~我想太多了!如果真的這麼簡單的話,Peter大就不用開一堂3小時的課程講了!

基本上AutoLayout的部分,我個人覺得主要的方式還是要學習怎麼去對齊物件,或是互相參考其相互關係而設立說條件,從xcode的介面來看,不是很難上手,但真的深入了解,才發現彼此相互關係的設定如果沒有在一開始就想清楚,後面就很容易造成約束條件過多或是不足的狀況產生。

本日重點:

protocol & delegate
今天一直想搞懂protocol與delegate的東西,因為聽得實在是霧颯颯。回家看著Peter的投影片範例,一直反覆key in在playground裡看到底相互關係是什麼,後來在網路上找到一些文章在說明protocol&delegate的東西,稍微有那麼一點點的了解。

延伸學習:http://www.jianshu.com/p/2310f29d45e0
http://mobile.51cto.com/iphone-278695.htm
http://justcoding.iteye.com/blog/1453902
http://www.swiftmi.com/topic/237.html (UITextViewDelegate/UITextFieldDelegate example)
http://blog.csdn.net/qq350116542/article/details/45124147

作業一:三個image view水平排列,彼此間距10,距離左右邊界間距20, 等寬,寬高比例1:2,垂直置中

Xcode原始檔:https://drive.google.com/open?id=0B50Vmg6QH_TMdjQ0MXdaVGpsNHc

作業二:2個Button水平置中,button彼此的間距為10
記得Peter有說是要對稱畫面的正中心,所以兩個button是會分屬在畫面中新的左右兩邊,但在AutoLayout的對稱與約束條件裡,並沒有物件的邊到中線的約束條件可以選擇,所以我的偷吃步方式,是在這兩個Button的外面又再框了一個view,讓他先在畫面正中心,並把寬度固定,扣除兩個button的寬度以及中間間距10,就知道左右兩邊的間距是多少,再定義左邊button的leading edge gap就完成了,只是這樣將來要改大小時就會比較麻煩,需要調整相對的東西。
不知道正確的方式是什麼?能不能把這兩個button群組化,這樣就可以群組置中了!!

做完作業三找了網路上的教學,再回頭過來做這題就相當簡單了,一樣就是stackView的功能來達到效果!StackView有點像是把幾個component群組化,這樣就可以把它當作是一個大物件來進行相關的對齊。

Xcode原始檔:https://drive.google.com/open?id=0B50Vmg6QH_TMSTMzbmw3dFFQSkU

Xcode原始檔(用stack view):https://drive.google.com/open?id=0B50Vmg6QH_TMUEMyM2dPbEJvVEU

作業三:三個Button水平排列,彼此的間距以及和邊界的間距都一樣大,button的長度等於內容文字長度,不同screen size時,間距大小不同。
老實說,這題真的很難,但上網查了一下,有找到人家的解釋與教學,所以算是有成功做出來,只是方法不知道對不對。參考網址:http://stackoverflow.com/questions/32862142/how-to-add-equal-spacing-and-equal-width-for-button-in-ios-auto-layout

Xcode原始檔:https://drive.google.com/open?id=0B50Vmg6QH_TMdHpLX2tqXy05Z1U

作業四:就是要完成下圖的形式,不過我完成之後,轉90度,button就跑掉了!我想應該是縱軸向也要加入看不到的view,然後再建立一個stackView來讓間距可大可小的變化吧!

Xcode原始檔:https://drive.google.com/open?id=0B50Vmg6QH_TMbU1fQWlxR0xoTjg