本講簡介:介紹了UI中的最基本的元素 -- 視圖棒假。并通過一個(gè)演示進(jìn)行了詳細(xì)的講解。
視圖(UIView)
做為最基本的UI元素,它有兩種初始化方式
1烂瘫,init(frame: CGRect)? ? // UIView 由手工建立
2媒熊,init(coder: NSCoder) ? ?//View是在storyboard里創(chuàng)建
awakeFromNib() ? //參考第六講中視圖控制器的生命周期部分
UIViewControler有一個(gè)根視圖
removeFromSuperView()方法是作用在subView上的
Autolayout ?vs ?手工編寫代碼
盡量使用Autolayout,控件較多的時(shí)候要分組坟比。手工編寫代碼也可以先使用autolayout調(diào)整效果芦鳍。
像素(pixels) vs 點(diǎn)(points)
最初像素和點(diǎn)是一一對應(yīng)的。從retina屏幕開始一個(gè)點(diǎn)可以對應(yīng)2x2或3x3(plus設(shè)備)個(gè)像素了葛账。 所以準(zhǔn)備資源的時(shí)候需要準(zhǔn)備不同分辨率的素材怜校。這些資源通過名字中加@2x或 @3x來區(qū)分
contentScaleFactor : CGFloat of UIView
Bounds vs Frame
Bounds 代表了view的繪制區(qū)域。Bounds的原點(diǎn)在左上注竿,然后向右和向下增大茄茁。單位是點(diǎn),不是像素巩割。Bounds應(yīng)用的是自己的坐標(biāo)系統(tǒng)裙顽。
Draw 里面不要使用 Frame和 Center 屬性(只用于定位)。View的旋轉(zhuǎn)可能會(huì)引起Frame的變化宣谈。而Bounds不會(huì)改變愈犹。
本講的演示。可以從 “https://github.com/mayongl/CS193P” 下載本講的代碼闻丑。這里只談三個(gè)小點(diǎn)
1漩怎,在 storyboard 里面看 ViewController 是有一個(gè) View 的。如果不在上面新建 view嗦嗡,直接把它的類改成 FaceView 效果也是一樣的勋锤。但 @IBDesignable 就不工作了。
2侥祭,這個(gè)演示里叁执,使用了 “reset to suggested constraints" 進(jìn)行自動(dòng)布局。然后會(huì)自動(dòng)生成4個(gè)constraints矮冬,要瀏覽它們谈宛,并適當(dāng)編輯。對contraints中的值要盡量使用 standard 或 0胎署。
3吆录,CGRect的功能和屬性有很多,值得讀一下文檔和定義琼牧。
本講筆記寫的有些簡單恢筝。歡迎留言提問哀卫。謝謝。