本讲简介:介绍了UI中的最基本的元素 -- 视图。并通过一个演示进行了详细的讲解。
视图(UIView)
做为最基本的UI元素,它有两种初始化方式
1,init(frame: CGRect) // UIView 由手工建立
2,init(coder: NSCoder) //View是在storyboard里创建
awakeFromNib() //参考第六讲中视图控制器的生命周期部分
UIViewControler有一个根视图
removeFromSuperView()方法是作用在subView上的
Autolayout vs 手工编写代码
尽量使用Autolayout,控件较多的时候要分组。手工编写代码也可以先使用autolayout调整效果。
像素(pixels) vs 点(points)
最初像素和点是一一对应的。从retina屏幕开始一个点可以对应2x2或3x3(plus设备)个像素了。 所以准备资源的时候需要准备不同分辨率的素材。这些资源通过名字中加@2x或 @3x来区分
contentScaleFactor : CGFloat of UIView
Bounds vs Frame
Bounds 代表了view的绘制区域。Bounds的原点在左上,然后向右和向下增大。单位是点,不是像素。Bounds应用的是自己的坐标系统。
Draw 里面不要使用 Frame和 Center 属性(只用于定位)。View的旋转可能会引起Frame的变化。而Bounds不会改变。
本讲的演示。可以从 “https://github.com/mayongl/CS193P” 下载本讲的代码。这里只谈三个小点
1,在 storyboard 里面看 ViewController 是有一个 View 的。如果不在上面新建 view,直接把它的类改成 FaceView 效果也是一样的。但 @IBDesignable 就不工作了。
2,这个演示里,使用了 “reset to suggested constraints" 进行自动布局。然后会自动生成4个constraints,要浏览它们,并适当编辑。对contraints中的值要尽量使用 standard 或 0。
3,CGRect的功能和属性有很多,值得读一下文档和定义。
本讲笔记写的有些简单。欢迎留言提问。谢谢。