做ios開發時,有很多東西都用不慣,比如沒有單獨設定view的位置和大小的方法,而要把位置和大小一起初始化,感覺有點麻煩。
在cocos2d裡就非常方便,因為cocos2d的錨點可以很方便地設定子檢視的位置,而ios裡沒有錨點這個概念。
所以我把cocos2d的錨點移植到了ios裡,並做了一些修改,使其成為了有著ios特色的錨點。
cocos2d裡採用opengl es座標系,座標原點在螢幕左下角。而ios採用的是quartz 2d座標系,座標原點在螢幕左上角。
在cocos2d和ios中分別把檢視的座標點設為(10,10),結果如下:
因為cocos2d的檢視是以檢視的中心位置設定座標點的,而ios的檢視是以左上角設定座標點的。
那麼什麼是錨點呢?下面以乙個例子來說明:
比如要建立以下兩個檢視,藍色檢視左上角在座標(5,4)處,而橙色檢視右邊和藍色檢視對齊,有一半的高度處於藍色檢視外面。
uiview *blueview = [[uiview alloc] initwithframe:cgrectmake(5, 4, w, h)];blueview.backgroundcolor = [uicolor bluecolor];[self.view addsubview:blueview]; uiview *orangeview = [[uiview alloc] initwithframe:cgrectmake(w-w, h-h/2, w, h)];orangeview.backgroundcolor = [uicolor orangecolor];[blueview addsubview:orangeview];
按照ios標準的建立檢視的寫法可以這樣寫**:
uiview *blueview = [[uiview alloc] initwithframe:cgrectmake(5, 4, w, h)];blueview.backgroundcolor = [uicolor bluecolor];[self.view addsubview:blueview]; uiview *orangeview = [[uiview alloc] initwithframe:cgrectmake(w-w, h-h/2, w, h)];orangeview.backgroundcolor = [uicolor orangecolor];[blueview addsubview:orangeview];
可以看到建立檢視時就要計算檢視左上角的座標,非常麻煩。而使用了錨點的**可以這樣寫:
可見**十分優雅,一開始先初始化檢視大小,然後再設定檢視的位置。
橙色檢視的座標點是(w, h),錨點是(1, 0.5),通過這兩個點就可以設定檢視的準確位置了,根本就不用去計算橙色檢視的左上角的座標(w – w, h – h/2)。
可以這樣說:錨點是子檢視用來設定位置的乙個定位點,使用錨點就不會用子檢視的寬高參與計算,省去了麻煩的計算,從而讓**更優雅。
從下圖可知,錨點的取值範圍是[0, 1]。
設定乙個子檢視的座標時,錨點(0, 0)表示把子檢視的左上角放到該座標的位置,錨點(0.5, 0.5)表示把子檢視的中點放到該座標的位置。
通過category為uiview新增設定錨點的方法,所有view的子類就可以使用該方法。
**見**裡通過self.width就能取到view的寬度了,而不用寫self.frame.size.width。
通過**也可以清楚地知道:實現錨點的方法其實很簡單,就是在setposition:atanchorpoint:方法裡面利用錨點和子檢視的寬高進行計算,從而調整了子檢視的位置。
iOS 使用swift開發的優缺點開發的優缺點
妹子我oc起家,後換工作後,接手的新專案,自學swift也有一段時間了,心想著新專案,就實踐一下,然後整個專案就以swift語言為主,但是在實際開發過程中,有很多無法避免的問題。1 我們不得不承認的是swift語言比oc精簡,整個專案中丟掉了標頭檔案,以及標頭檔案的引入。2 報錯的時候直接顯示報錯行...
iOS開發之錨點anchorPoint
效果圖如下 我們可以看到,不管棕色的方塊怎麼運動,總是以綠色的店作為中心來移動的,這就和船隻的錨點是一樣的道理 一 簡介 anchorpoint 錨點以錨點為中心,執行動畫 與漁夫固定船的點一致 anchorpoint 預設是 0.5 0.5 錨點是乙個比例 anchorpoint 錨點在左上角的時...
iOS開發 UITableView的使用
uitableview是我們使用用來展示資料的,他的使用很廣泛,也是使用最多的控制項,下面就一起看看他的簡單使用吧。uitabelview本身自帶uiscrollview,所以資料多了,他就是自動滾動。要想在uitabelview中顯示資料,必須有乙個資料來源,也就是讓viewcontroller實...