自學Swift-UIKit

UIKit提供了IOS上實現的圖形,事件驅動程序的框架
UIView是視圖的基類
UIViewController視圖控制器的基類
UIResponder表示一個可以接受觸摸屏上的觸摸事件
**

UIView

**
視圖,通常是UIView的一個對象,表示屏幕上的一塊矩形區域,同事處理該區域的繪製和觸屏事件.
IOS系統座標
Iphone座標以左上角爲原點
Frame和Bounds

  • Frame以其父視圖爲起點,得出它自己的位置信息
  • Bounds即以IOS系統的座標原點爲起點,原點座標是(0,0)
  • Center表示視圖中心點所在的位置.
    自創建一個singleView,在viewDidLoad()中添加如下代碼查看Frame和Bounds的區別
/// 設置一個UIVIew在x;100,y:100 長寬都爲100
        var aView = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
        aView.backgroundColor = UIColor.redColor()  //設置背景顏色
        self.view.addSubview(aView) //加入到view中
        println("View Frame座標爲(\(self.view.frame.origin.x),\(self.view.frame.origin.y))")
        println("View Bounds座標爲(\(self.view.bounds.origin.x),\(self.view.bounds.origin.y))")
        println("aView Frame座標爲(\(aView.frame.origin.x),\(aView.frame.origin.y))")
        println("aView Bounds座標爲(\(aView.bounds.origin.x),\(aView.bounds.origin.y))")

運行結果如下:
這裏寫圖片描述
最後在控制檯輸出的結果爲:
這裏寫圖片描述
由此可以看出aView的確與主視圖的原點爲起點,得到自己的位置,而Bounds還是以IOS系統原點爲左邊.

創建UIView

通過剛剛的代碼也可以看到有創建UIView的代碼

var aView = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
aView.backgroundColor = UIColor.redColor()  //設置背景顏色
self.view.addSubview(aView) //加入到view中

設置背景顏色只是爲了能夠看清楚….不然加入了也跟背景一個色,,誰分的出來啊喂…
UIView層次結構可以理解爲視圖樹
一個視圖可以嵌入多個Subview().但是只能有一個SuperView
常用的方法有:

addSubview(view:UIView) //添加子視圖
insertSubview(<#view: UIView#>, atIndex: <#Int#>)//把某個視圖插入到制定索引位置
exchangeSubviewAtIndex(<#index1: Int#>, withSubviewAtIndex: <#Int#>)//調換兩個索引對應的視圖調換位置
removeFromSuperview //把視圖從父視圖中移除

查找視圖

UIView類中有一個tag屬性,通過這個tag屬性可以標識一個視圖對象.
獲取的方法:viewWithTag:用來檢索標識過的視圖

aView.tag = 10;  //設置aView的tag值
var bView = self.view.viewWithTag(10)   //獲取到aView的tag 返回對象也是UIView
bView?.frame.origin = CGPoint(x: 300, y: 300)   //改變位置到300,300處
bView?.backgroundColor = UIColor.blueColor()  //改變了顏色 

再次運行一下上代碼,會赫然發現.aView居然變色成藍色了,,而且跑到屏幕邊上去了..tag值只能接受int值
UIView常用屬性
alpha //透明度
backgroundColor //背景色
subViews //子視圖集合
hidden //是否隱藏 true or false
tag //標籤值
superView //父視圖
multipleTouchEnabled //是否開啓多點觸摸
userInteractionEnabled //是否響應觸摸事件

座標變換

座標變換是通過transform屬性來改變
CGAffineTransformScale //對視圖比例縮放
CGAffineTransformRotate //對視圖作變焦旋轉
CGAffineTransformTranslate //對視圖在原來的位置上做平移
添加代碼如下:

//先見aView的transform賦值給一個對象,然後在每次使用aView的transform的時候調用該對象
var transForm = aView.transform
aView.transform = CGAffineTransformScale(transForm, 2, 2)//放大
aView.transform = CGAffineTransformRotate(transForm, 10)//旋轉
aView.transform = CGAffineTransformTranslate(transForm, 100, 100)

UIView屬性的動畫

UIView對象中支持對象的屬性有:
frame - 可以使用這個來動畫的改變視圖的尺寸和位置
bounds - 使用這個可以動畫的改變視圖的尺寸
center - 使用這個可以動畫的改變視圖的位置
transform - 使用這個可以旋轉或縮放視圖
alpha - 使用這個可以改變視圖的透明度
backgroundColor - 可以改變視圖的背景顏色
contentStetch - 改變視圖的拉伸
添加一段動畫代碼:

var transform = aView.transform

UIView.animateWithDuration(3, animations: {
            aView.backgroundColor = UIColor.blueColor()
            aView.transform = CGAffineTransformScale(transform, 0.1, 1)
            aView.transform = CGAffineTransformRotate(transform, 40)
            aView.transform = CGAffineTransformTranslate(transform, 200, 150)
            aView.alpha = 0.5
})

然後添加後運行你會發現一個突然間拉伸很畸形的正方形往右邊跑起來,而且還會繞圈,跑到了比之前的座標還下去的地方,而且還慢慢變透明.
這個方法使用的是UIView的一個動畫方法,方法第一個參數爲一個時間,表示要幾秒完成這些操作,第二個方法爲一個代理傳入一個參數,這應該是算使用了閉包函數來直接進行了動畫的DUANG…..特效….

發佈了28 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章