通過向mainView添加sunView來模擬實(shí)現(xiàn)九宮格數(shù)據(jù)的添加。
想要實(shí)現(xiàn)九宮格,主要在于每個sunView的X,Y值的計(jì)算,寬、高自定義即可。
添加sunView的寬和高分別為:vieW,viewH。

Untitled.png
列間距:colMargin,行間距:rowMargin。
X坐標(biāo)的計(jì)算:
由上圖可知每個sunView的X坐標(biāo)為:viewW+colMargin的倍數(shù)。
舉個??:例如1的X的坐標(biāo)為:0*(viewW+colMargin)。2點(diǎn)X坐標(biāo)1*(viewW+colMargin)。其他以此類推。
倍數(shù)col(系數(shù))的獲得:
col = index % cols;index為在mainView中含有的sunView的個數(shù),cols為你所需要實(shí)現(xiàn)效果的列數(shù)。
說明:當(dāng)mainView中不含有任何sunView的時候,index的值為零,當(dāng)他對cols取余的時候余數(shù)為零,對應(yīng)的系數(shù)為零,所對應(yīng)的X值為零,即1的X坐標(biāo)為0。繼續(xù)添加,此時已有一個sunView,index的值為1,對cols取余的值為1,此時X值為1*(viewW+colMargin),即2的坐標(biāo)為1*(viewW+colMargin)。其他以此類推。
NSUIntegercol = index % cols;CGFloatviewX = col * (viewW + colMargin);
Y坐標(biāo)的計(jì)算:
由上圖可知每個sunView的Y坐標(biāo)為:viewW + colMargin的倍數(shù)。思想類似于Y坐標(biāo)的計(jì)算,這里不再贅述。
倍數(shù)row(系數(shù))的獲得:
row = index / cols。
NSIntegerrow = index / cols;CGFloatviewY = row * (viewH + rowMargin);
完整代碼地址
Github:iOS-sudoku