亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS實現比例拼圖的方法示例

2020-07-26 02:25:45
字體:
來源:轉載
供稿:網友

需求原型圖:


要求:

各個模塊的大小反映各個模塊的占比(銷售額),所有模塊共同組成一個正方形。

后臺返回的數據格式:

{ "result": true, "data": { "category_sale": [ {  "name": "我是你的哥",  "sale_amount": 1,  "gross_margin_ratio": 0.22 }, {  "name": "不是親哥哥",  "sale_amount": 4,  "gross_margin_ratio": 0 }, {  "name": "呵呵噠",  "sale_amount": 3,  "gross_margin_ratio": 0.19 }, {  "name": "因缺思廳",  "sale_amount": 2,  "gross_margin_ratio": 0.4 }] }, "msg": "ok", "code": 200, "executed": "0.0320830345"}

注:gross_margin_ratio代表“毛利率”,不是模塊的占比。

分析

第一眼看到這個原型圖的時候我就覺得不簡單,后面和Android一起研究了一下,也沒有想到什么好的算法。正巧那天上司跑來問我們有沒有什么需要幫忙的,我趕緊把這個問題扔給他。

一周后,他給我說了思路:

每一排放三個,讓它們的高度一致。

經他這么一點,這個問題立即就不是問題了(放3個還是放兩個通過開方得到最合適的值)。

一排放三個模塊,三個一組組成一個矩形,這一組的總面積確定,寬確定,那么高就確定了。高確定,每個模塊的面積確定,每個模塊的寬也就確定了。至于排版

交給UICollectionView就行了。

實現

效果如下:


核心代碼:

- (void)setModel:(CQCategoryModel *)model { _model = model;  CGFloat totalSaleAmount = 0; for (CQCategoryItemModel *itemModel in _model.category_sale) { totalSaleAmount += itemModel.sale_amount; }  for (CQCategoryItemModel *itemModel in _model.category_sale) { if (totalSaleAmount == 0) {  // 特殊處理只有一個item,并且SaleAmount還是0的情況  itemModel.ratio = 1; } else {  itemModel.ratio = itemModel.sale_amount/totalSaleAmount; } }  // 計算列數 NSInteger listCount = 0; for (int i = 0; i < _model.category_sale.count; i++) { if (i * i < _model.category_sale.count && (i+1) * (i+1) >= _model.category_sale.count) {  listCount = i+1;  break; } }  // 計算行數 NSInteger rowCount = ceil(_model.category_sale.count / (CGFloat)listCount);  // 這個方陣是listCount*rowCount的矩陣(最后一排可能不足listCount) // 同一排的cell高度相同 for (int i = 0; i < rowCount; i++) { // 行 CGFloat rowArea = 0; // 行面積 for (int j = 0; j < listCount; j++) { // 列  if (i*listCount+j>=_model.category_sale.count) {  break;  }  CQCategoryItemModel *itemModel = _model.category_sale[i*listCount+j];  itemModel.size = itemModel.ratio * (self.collectionView.width*self.collectionView.width);  rowArea += itemModel.size; } // 計算cell的寬高 for (int j = 0; j < listCount; j++) { // 列  if (i*listCount+j>=_model.category_sale.count) {  break;  }  CQCategoryItemModel *itemModel = _model.category_sale[i*listCount+j];  itemModel.height = rowArea / self.collectionView.width;  itemModel.width = itemModel.size / itemModel.height; } }  [self.collectionView reloadData];}- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { CQCategoryItemModel *model = self.model.category_sale[indexPath.row]; // 減去0.01,避免因小數不精確存儲導致一組cell寬度相加超過collectionView的寬度 return CGSizeMake(model.width-0.01, model.height);}

完整demo

https://github.com/CaiWanFeng/iOS_Demo (本地下載)

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品露脸自拍| 亚洲欧美在线免费| 97精品伊人久久久大香线蕉| 国产午夜一区二区| 欧美成年人在线观看| 亚洲成av人乱码色午夜| 亚洲第一男人av| 欧美成人免费网| 欧美亚洲激情视频| 日本成人免费在线| 欧美日韩国产专区| 国产在线播放91| 午夜精品久久17c| 色久欧美在线视频观看| 中文字幕亚洲一区二区三区五十路| 一区二区三区视频在线| 中文字幕亚洲综合| 国产精品免费电影| 亚洲国产黄色片| 欧美一区亚洲一区| 2023亚洲男人天堂| 亚洲在线免费看| 国产va免费精品高清在线| 亚洲精品国产精品自产a区红杏吧| 日韩中文字幕在线视频播放| 国产91精品久久久久| 久久亚洲综合国产精品99麻豆精品福利| 欧美在线播放视频| 亚洲国产精品va在线| 亚洲精品国产精品乱码不99按摩| 国产精品电影久久久久电影网| 国产精品视频男人的天堂| 亚洲人成绝费网站色www| 国产精品久久久久久五月尺| 亚洲精品视频二区| 91免费看片网站| 超碰97人人做人人爱少妇| 国产精品成人久久久久| 日韩极品精品视频免费观看| 国内自拍欧美激情| 国产69精品99久久久久久宅男| 久久亚洲国产精品成人av秋霞| 国产视频观看一区| 精品中文字幕在线| 中文字幕在线看视频国产欧美在线看完整| 欧美色播在线播放| 97香蕉久久超级碰碰高清版| 国产一区二区三区18| 国产日韩综合一区二区性色av| 亚洲人成电影在线| 欧美另类第一页| 日韩电影免费观看在线观看| 日韩av在线网| 日韩成人在线视频观看| 2019中文字幕全在线观看| 亚洲老板91色精品久久| 在线看福利67194| 视频一区视频二区国产精品| 国色天香2019中文字幕在线观看| 国产国产精品人在线视| 4388成人网| 欧美日韩亚洲精品一区二区三区| 欧美韩日一区二区| 91高清在线免费观看| 国产91网红主播在线观看| 国产精品pans私拍| 国产精品午夜一区二区欲梦| 日韩在线免费高清视频| 久久久久免费视频| 夜夜嗨av色综合久久久综合网| 国产精品成人va在线观看| 国产成人a亚洲精品| 91精品国产综合久久香蕉922| 91成人免费观看网站| 国产69精品久久久久99| 91亚洲人电影| 色www亚洲国产张柏芝| 欧美精品精品精品精品免费| 日韩成人激情在线| 亚洲小视频在线观看| 中文字幕在线观看亚洲| 欧美性猛交xxxx乱大交| 欧美一级大片在线观看| 成人免费xxxxx在线观看| 97成人精品区在线播放| 亚洲综合av影视| 国产精品美女主播| 色先锋资源久久综合5566| 国产精品免费电影| 97人人爽人人喊人人模波多| 亚洲丝袜一区在线| 深夜福利国产精品| 国内精品在线一区| 国产精品成人播放| 国产一区二区三区18| 日韩美女免费线视频| 久久亚洲精品毛片| 成人性生交大片免费观看嘿嘿视频| 粉嫩老牛aⅴ一区二区三区| 欧美三级欧美成人高清www| 91精品久久久久久久久久另类| 亚洲成人中文字幕| 欧美精品一二区| 国产狼人综合免费视频| 久久亚洲精品网站| 亚洲日本欧美中文幕| 久热精品视频在线免费观看| 亚洲一区二区三区777| 久久亚洲国产精品| 久久久亚洲国产天美传媒修理工| 日韩国产精品视频| 久久精品男人天堂| 国产成人aa精品一区在线播放| 日本欧美爱爱爱| 久久精品久久久久久国产 免费| 亚洲电影免费观看高清完整版在线| 久久精品国产精品| 夜夜嗨av一区二区三区四区| 欧美福利在线观看| 伊人激情综合网| 久久久久久久久久久免费精品| 亚洲成av人乱码色午夜| 亚洲第一福利在线观看| 日本三级韩国三级久久| 精品女同一区二区三区在线播放| 大桥未久av一区二区三区| 国产成人精品久久亚洲高清不卡| 日韩av不卡电影| 538国产精品视频一区二区| 亚洲男女自偷自拍图片另类| 97视频在线观看免费高清完整版在线观看| 欧美自拍大量在线观看| 欧美精品福利视频| 国产91热爆ts人妖在线| xxav国产精品美女主播| 中文字幕亚洲国产| 日本高清久久天堂| 成人网在线免费看| 亚洲国产精品久久久| 国产精品一区二区三区免费视频| 中文字幕免费精品一区高清| 亚洲国产精彩中文乱码av在线播放| 中文字幕精品视频| 国产精品久久久久99| 欧美视频免费在线| 韩国国内大量揄拍精品视频| 中文字幕亚洲欧美| 亚洲有声小说3d| 亚洲成人a**站| 国产成人极品视频| 亚洲国产精品久久久久秋霞不卡| 亚洲无限av看| 欧美成aaa人片在线观看蜜臀| 蜜臀久久99精品久久久久久宅男| 亚洲美女av在线播放| 精品久久久久久中文字幕| 国产婷婷97碰碰久久人人蜜臀| 久久av红桃一区二区小说| 夜夜躁日日躁狠狠久久88av| 欧美一区二粉嫩精品国产一线天| 日韩av色在线| 亚洲第一综合天堂另类专| 久久精品亚洲精品| 成人在线中文字幕|