上班忙完以後稍得空閒,回想下一些OC技術,就作一下九宮格的佈局與位置計算,想到哪裏就寫到哪嘍。git
第一:先上一張手畫版的九宮格.net
第二:先預先來一些變量:每個小格width=80,height:90,x軸上的兩個小格之間的間距爲xMargin,那麼y軸的就是yMargin,假設一行能夠佈局m個小格(不僅是圖片上的畫的那樣,只是個例子).mainstoryboard中有多少小格變量code
爲counts圖片
xMargin=(self.fram.size.width-width*m)/(m-1);//不理解的話能夠套用上面一行三格的,加深理解 yMargin本身給值就好 //接下來咱們要判斷,所加的小格是在第幾行,第幾列就能夠(這個很關鍵) counts=self.view.subViews.count; //注意一點:九宮格的第一行是0行,第一列是0列(方便理解下面行列的計算) //第幾行 row=counts/m; //當一行有三列時,那麼當mainstoryboard上沒有控件時counts=0,那麼就是第0行 //那麼添加的小格的行y軸位置就是 0*(height+yMargin) //第幾列的 //由余數來判斷是第幾列的 col=counts%m; //那麼當mainstoryboard上沒有控件時counts=0,那麼就是第0列 //那麼列的x軸位置就是 0*(width+xMargin) //當counts=4時,即mainstoryboard上已有4個格子,那麼第五個位置在哪裏? //row=4/3=1 col=4%3=1 //由上可知,即 第一行的第一列(也就是九宮格三行三列最中間那個位置) //那麼x軸 (列)1*(width+xMargin) y軸 (行)1*(height+yMargin)
第三:九個小格佈局在mainstoryboard上,get