亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

九宮格視圖的布局及展示(相冊選擇)

發布時間:2020-07-12 05:58:41 來源:網絡 閱讀:1436 作者:Jacksun2Coshine 欄目:開發技術

        上周一個朋友帶的項目出了點問題,招的ios開發人員在實現選取相冊圖片后用九宮格的樣式展示時遇到了瓶頸,花了將近2周都沒有解決。后來在跟我交流的過程中他把項目的圖片發給我看了下,看完我就笑了,這就只是個算法的問題,花點時間思考下基本就能解決的。廢話不多說,把之前完成的效果展示出來。

九宮格視圖的布局及展示(相冊選擇)

九宮格視圖的布局及展示(相冊選擇)

九宮格視圖的布局及展示(相冊選擇)

九宮格視圖的布局及展示(相冊選擇)

九宮格視圖的布局及展示(相冊選擇)

九宮格視圖的布局及展示(相冊選擇)

        以上是直接用手機截的圖,傳上來沒想到會這么大。其中圖片添加的功能是引入了一個第三方的庫,非常好用,跟qq上的圖片添加功能幾乎沒兩樣,庫的名字是ZLPhotoActionSheet。當然這都不是重點,重點是怎樣去實現九宮格的展示,上面的圖片中每行是4個,這個是我自定義的宏,可以任意修改,每行的展示數目以及展示的總數目,是比較靈活的。

        這里要說的是算法的核心,如果想不到這些也就沒法做到自動換行展示了。

        首先,你得自定義展示的總數目MAXPhotosNO(這里默認是9),每行展示的個數AvgImgsNo(默認為4),在自定義用來展示九宮格的視圖類里寫一個對象方法-(void)updateTheViewWithImgsArr:(NSArray *)imgsArr;,也就是將獲取到的圖片數組對象傳入這個方法,然后再進行處理。

        然后,就到了最關鍵的一步了,對圖圖片數組進行處理。先判斷數組里元素個數是否等于MAXPhotosNO,這里用于判斷是否需要隱藏添加按鈕。然后進行for循環處理,創建用于承載圖片的UIImageView,個數為圖片數組元素的個數。每次創建之前要知道它是第幾行的第幾個,以此來計算它應該處的位置。

        設置2個int類型參數:(i代表循環的變量)

        int s = i/AvgImgsNo;(確定是第幾行,0代表第一行,以此類推)

        int r = i%AvgImgsNo;(確定是第幾個,0代表第一個,以此類推)

        接下來就可以計算它的位置了:(帶space的參數為間距)

        imgV.frame = CGRectMake(ImgSpace*(r+1)+AvgWidth*r,RowSpace*                (s+1)+AvgWidth*s,AvgWidth,AvgWidth);

        當然,千萬別忘了添加按鈕的位置也發生了改變:

        同樣的2個參數: (因為它始終是最后一個,所以直接在后面加1計算就可以了)

        int k = (i+1)/AvgImgsNo;

        int j = (i+1)%AvgImgsNo;

        這里要注意:如果數組元素的個數已經達到了設置的MAXPhotosNO的最大值,要這樣做處理

        if((int)imgsArr.count==MaxPhotosNo){


            k = MaxPhotosNo/AvgImgsNo;    //始終讓它處在最后一行的最后一個,因為我需要它的方位來布局,如果不要的同學,可以不用這樣寫

    

        }

         最后,其實已經完成了,其中的細節可能還有些,但是大體的思路基本就是這個樣子,非常的簡單。我真的有點不明白為啥這樣的一個功能2周都寫不出來......,好吧我們都是站在巨人肩膀上說風涼話的人哈哈~



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南丰县| 邵武市| 胶州市| 商水县| 鹤岗市| 盘山县| 凯里市| 黑河市| 永德县| 上饶市| 绵阳市| 萨嘎县| 开鲁县| 灯塔市| 嵊州市| 新乡市| 财经| 麻阳| 高唐县| 雅安市| 双峰县| 上饶县| 博兴县| 和林格尔县| 彰化县| 谢通门县| 得荣县| 潮安县| 涟源市| 平罗县| 苍梧县| 偏关县| 泽普县| 桓台县| 景泰县| 柳州市| 抚宁县| 宁国市| 东安县| 威信县| 南和县|