iOS日常開(kāi)發(fā)-九宮格布局

日常開(kāi)發(fā)中带欢,我們不能老是用collectionView去寫(xiě)运授,在某些場(chǎng)景中colectionView太重,好比用大炮打蚊子....

bg.png

成果

result.png

代碼

 CGFloat margin_X = 1; // 水平間距
   
   CGFloat _margin_Y = 1; // 數(shù)值間距
   
   CGFloat itemWidth = 50; // 寬
   
   CGFloat itemHeight = 50; // 高
   
   int totalColumns = 3; // 每行最大列數(shù)(影響到底幾個(gè)換行)
   
   NSInteger sourceNumber = 20;  // 數(shù)據(jù)源
   
   for(int index = 0; index < sourceNumber; index++) {
       UIView * itemView = [[UIView alloc]init];
       itemView.backgroundColor = [UIColor redColor];
       
       int row = index / totalColumns;
       
       int col = index % totalColumns;
       
       NSLog(@"index----%d totalColumns------%ld row ------%d  col--------%d",index,totalColumns,row,col);
       
       CGFloat cellX =  col * (itemWidth + _margin_X);
       
       CGFloat cellY = row * (itemHeight + _margin_Y);
       
       itemView.frame = CGRectMake(cellX,cellY, itemWidth, itemHeight);
       
       [self.view addSubview:itemView];
   }

打印日志

2019-05-14 09:56:09.269396+0800 九宮格算法[2642:91676] index----0 totalColumns------3 row ------0  col--------0
2019-05-14 09:56:09.269786+0800 九宮格算法[2642:91676] index----1 totalColumns------3 row ------0  col--------1
2019-05-14 09:56:09.269931+0800 九宮格算法[2642:91676] index----2 totalColumns------3 row ------0  col--------2
2019-05-14 09:56:09.270099+0800 九宮格算法[2642:91676] index----3 totalColumns------3 row ------1  col--------0
2019-05-14 09:56:09.270240+0800 九宮格算法[2642:91676] index----4 totalColumns------3 row ------1  col--------1
2019-05-14 09:56:09.270368+0800 九宮格算法[2642:91676] index----5 totalColumns------3 row ------1  col--------2
2019-05-14 09:56:09.270502+0800 九宮格算法[2642:91676] index----6 totalColumns------3 row ------2  col--------0
2019-05-14 09:56:09.270653+0800 九宮格算法[2642:91676] index----7 totalColumns------3 row ------2  col--------1
2019-05-14 09:56:09.270796+0800 九宮格算法[2642:91676] index----8 totalColumns------3 row ------2  col--------2
2019-05-14 09:56:09.270924+0800 九宮格算法[2642:91676] index----9 totalColumns------3 row ------3  col--------0
2019-05-14 09:56:09.271046+0800 九宮格算法[2642:91676] index----10 totalColumns------3 row ------3  col--------1
2019-05-14 09:56:09.271272+0800 九宮格算法[2642:91676] index----11 totalColumns------3 row ------3  col--------2
2019-05-14 09:56:09.271583+0800 九宮格算法[2642:91676] index----12 totalColumns------3 row ------4  col--------0
2019-05-14 09:56:09.271802+0800 九宮格算法[2642:91676] index----13 totalColumns------3 row ------4  col--------1
2019-05-14 09:56:09.272071+0800 九宮格算法[2642:91676] index----14 totalColumns------3 row ------4  col--------2
2019-05-14 09:56:09.272347+0800 九宮格算法[2642:91676] index----15 totalColumns------3 row ------5  col--------0
2019-05-14 09:56:09.272669+0800 九宮格算法[2642:91676] index----16 totalColumns------3 row ------5  col--------1
2019-05-14 09:56:09.272932+0800 九宮格算法[2642:91676] index----17 totalColumns------3 row ------5  col--------2
2019-05-14 09:56:09.273169+0800 九宮格算法[2642:91676] index----18 totalColumns------3 row ------6  col--------0
2019-05-14 09:56:09.273545+0800 九宮格算法[2642:91676] index----19 totalColumns------3 row ------6  col--------1

結(jié)論

從上面打印 可以發(fā)現(xiàn)一個(gè)規(guī)律

index /  totalColumns = row 
Index % totalColumns  = col
行數(shù) = 編號(hào) / 每行最大列數(shù)
列數(shù) = 編號(hào) % 每行最大列數(shù)

所以我們的view 位置就可以寫(xiě)成

  CGFloat cellX =  col * (itemWidth + _margin_X);
        
  CGFloat cellY = row * (itemHeight + _margin_Y);
        
  itemView.frame = CGRectMake(cellX,cellY, itemWidth, itemHeight);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乔煞,一起剝皮案震驚了整個(gè)濱河市吁朦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌渡贾,老刑警劉巖逗宜,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異空骚,居然都是意外死亡纺讲,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)囤屹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)熬甚,“玉大人,你說(shuō)我怎么就攤上這事肋坚∠缋ǎ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵智厌,是天一觀的道長(zhǎng)诲泌。 經(jīng)常有香客問(wèn)我,道長(zhǎng)铣鹏,這世上最難降的妖魔是什么敷扫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮吝沫,結(jié)果婚禮上呻澜,老公的妹妹穿的比我還像新娘递礼。我一直安慰自己惨险,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布脊髓。 她就那樣靜靜地躺著辫愉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪将硝。 梳的紋絲不亂的頭發(fā)上恭朗,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天屏镊,我揣著相機(jī)與錄音,去河邊找鬼痰腮。 笑死而芥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膀值。 我是一名探鬼主播棍丐,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼沧踏!你這毒婦竟也來(lái)了歌逢?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤翘狱,失蹤者是張志新(化名)和其女友劉穎秘案,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體潦匈,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阱高,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了历等。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讨惩。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖寒屯,靈堂內(nèi)的尸體忽然破棺而出荐捻,到底是詐尸還是另有隱情,我是刑警寧澤寡夹,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布处面,位于F島的核電站,受9級(jí)特大地震影響菩掏,放射性物質(zhì)發(fā)生泄漏魂角。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一智绸、第九天 我趴在偏房一處隱蔽的房頂上張望野揪。 院中可真熱鬧,春花似錦瞧栗、人聲如沸斯稳。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)挣惰。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間憎茂,已是汗流浹背珍语。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竖幔,地道東北人板乙。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像拳氢,于是被迫代替她去往敵國(guó)和親亡驰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355