1. 程式人生 > >一分鐘學會collectionView自定義layout(二、圓形佈局)

一分鐘學會collectionView自定義layout(二、圓形佈局)

圓形佈局很簡單,主要的是實現layoutAttributesForItemAtIndexPath,在這方法裡面計算cell的位置大小。

第一步:因為不是流水佈局,需繼承自UICollectionViewLayout。
再寫prepareLayout

-(void)prepareLayout{

    [super prepareLayout];
    [self.attrsArray removeAllObjects];
    //不是流水佈局,需要自己寫

    //組數
    NSInteger section = self.collectionView. numberOfSections;
    for
(int n = 0; n < section; n++) { //每組cell數 NSInteger count = [self.collectionView numberOfItemsInSection:n]; for (int i = 0 ; i < count; i++) { NSIndexPath *indexPath = [NSIndexPath indexPathForItem:i inSection:n]; //獲取佈局資訊 UICollectionViewLayoutAttributes *attrs = [self
layoutAttributesForItemAtIndexPath:indexPath]; [self.attrsArray addObject:attrs]; } } }

第二步:寫佈局,最關鍵的就是這一步

-(UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath{
    //組數
    NSInteger count = [self.collectionView numberOfItemsInSection:indexPath.section
]; //角度 CGFloat angle = 2*M_PI / count * indexPath.item; //原本的佈局資訊 UICollectionViewLayoutAttributes *attrs = [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath]; //設定半徑 CGFloat radius = 70 + indexPath.section *50; CGFloat x = self.collectionView.frame.size.width/2; CGFloat y = self.collectionView.frame.size.height/2; //設定cell的中心 attrs.center = CGPointMake(x + radius * sin(angle), y + radius *cos(angle)); //設定寬高 attrs.size = CGSizeMake(40, 40); return attrs; }

最後:返回陣列

-(NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect{
    return self.attrsArray;
}

附:如果想讓collectionView滑動,必須實現這個方法

#pragma mark ---- 返回CollectionView的內容檢視大小
-(CGSize)collectionViewContentSize;

成功執行後,如圖
這裡寫圖片描述

相關推薦

分鐘學會collectionView定義layout(圓形佈局)

圓形佈局很簡單,主要的是實現layoutAttributesForItemAtIndexPath,在這方法裡面計算cell的位置大小。 第一步:因為不是流水佈局,需繼承自UICollectionViewLayout。 再寫prepareLayout -

分鐘學會媒體快速批量製作短視訊的方法

“站在風口上,豬都會飛起來”。 自媒體從2016年開始就是一個風口,很多人實現了人生的逆襲! 同時,在2016年9月,今日頭條CEO張一鳴表示:短視訊將是內容創業的下一個風口。今日頭條宣告以10億元補貼頭條號上的短視訊創作者。時隔不到一年,2017年5月,今日頭條再次

ASP.NET Core 2.2 : . 內容協商與定義IActionResult和格式化類

上一章的結尾留下了一個問題:同樣是ObjectResult,在執行的時候又是如何被轉換成string和JSON兩種格式的呢? 本章來解答這個問題,這裡涉及到一個名詞:“內容協商”。除了這個,本章將通過兩個例子來介紹如何自定義IActionResult和格式化類。(ASP.NET Co

分鐘學會dwg轉jpg格式

cad編輯器 說到dwg文件轉為JPG格式,我們必須要利用到迅捷cad編輯器軟件,因為這款軟件功能的強大超出你的想象,下面就來一起看一下這款軟件將dwg文件轉為JPG格式的具體操作步驟吧。 CAD編輯器下載http://www.downxia.com/downinfo/132480.html 1

分鐘學會 ConstraintLayout 之從屬性角度理解布局

uic mem app tor normal add 部分 pla ray ConstraintLayout 在 Android 開發中,我們通常是手寫布局,很少會用拖動來寫布局,雖然 ConstraintLayout 在 I/O 上以拖動來展現了各種功能

Zabbix():定義腳本遠程命令報警升級測試實例

zabbix1.自定義腳本Zabbix中有統一的報警腳本存放路徑,即:/usr/lib/zabbix/alertscripts。[root@zrs1 ~]# cd /usr/lib/zabbix/alertscripts/ [root@zrs1 alertscripts]# vim mailalert.sh

分鐘學會】網站性能在線評估

訪問 服務 開發 技術 服務器ip 分享圖片 image 下載速度 clas 通過該工具可以多個地點Ping服務器以檢測服務器響應速度,如果輸入域名自動會進行網站響應速度檢測,包括網站解析時間,服務器連接時間,下載速度,http狀態,GZIP情況,文件大小等信息。 打開這個

大數據入門第二十天——spark(三)定義分區排序與查找

get buffer arr clas ron arm scala mut all 一、自定義分區   1.概述     默認的是Hash的分區策略,這點和Hadoop是類似的,具體的分區介紹,參見:https://blog.csdn.net/high2011/arti

分鐘學會如何訪問Pornhub

如何 時間 and ron 年輕 介紹 ans 一個 選擇 科普時間-Pornhub 如果你還不知道什麽是Pornhub,那麽今天你將大開眼界。 Pornhub是世界上最大的成年人視頻網站,各個國家、各種類型的視頻應有盡有,只有你想不到,沒有你找不到。詳細可以百度一下。

Java基礎()---方法的定義

自動類型轉換 數據 變量名 位置 小括號 ret 結束 打印 eth 方法:(Method) 1.概念:就是一段擁有特定功能的程序(在其他編程語言中稱為“函數”:Function) 2.特點:在方法名後面有小括號() 自定義方法: 1.位置: (1)類體中:即類名後的{

分鐘學會讀csv檔案和寫csv檔案(python實現)

  import csv with open('Python-Predict/Data/train.csv') as tra: rdr = csv.reader(tra) items = list(rdr) print("rdr:",rdr) print(items)

Centos6.10下Open-falcon學習記錄()——定義資料採集歷史查詢程序監控

記錄了學習過程,官方文件地址http://book.open-falcon.org/zh_0_2/usage/getting-started.html 另外還看了Open-falcon作者的寫的設計理念的文,見open-falcon編寫的整個腦洞歷程 1 自定義資料採集 自定義的資料要求

CAS4.0.3服務的搭建實戰定義登陸介面登陸驗證返回使用者資訊】

一切技術框架都會有一個使用者自定義的入口檔案,cas中自定義配置檔案在deployerConfigContext.xml中。 一、自定義登陸驗證 Tips:本專案使用mysql資料庫,因此已經在pom中匯入mysql的驅動。 開啟deployerConfigCo

微信小程式定義元件()

微信小程式自定義元件 ps 由於作業部落貌似出了點問題,耽誤了點時間,找了一個stackedit.io準備寫。無奈,這是要自己建編輯器的節奏啊。沒有一個能靠的注 為何存在元件 元件間的關係 使用relations實現元件的關係,即父子關係。 定義和使用元件間的關係

PHP定義生成維碼跳轉地址

  比較簡單的一款PHP自定義生成二維碼跳轉地址,手機端微信掃碼,自動跳轉到定義好的連結。支援自定義生成二維碼尺寸、間距等。    滑鼠懸浮顯示二維碼彈出層,離開後消失。js實現,程式碼如下:

【第十節】PyQt5定義控制元件

# -*- coding: utf-8 -*- """ PyQt5 tutorial In this example, we create a custom widget. author: py40.com last edited:

PDF怎麼壓縮大小,分鐘學會

PDF怎麼壓縮大小呢?比較大的PDF檔案很多,這些比較大的PDF檔案上傳的時候會比較麻煩,今天就來教給大家一種PDF壓縮大小的方法。 1:將PDF壓縮軟體安裝到自己的電腦中,開啟軟體找到對面板壓縮,點選PDF壓縮排入到壓縮的頁面。 2:在壓縮的頁面找到新增檔案以及新增

百度地圖的覆蓋物定義)--資訊視窗的定義(呼叫白茹提供的資訊視窗InfoWindow)

百度地圖的覆蓋物自定義(而)--資訊視窗的自定義(呼叫白茹提供的資訊視窗InfoWindow) var point=new BMap.Point(111.54525,45.578); setInfo

log4net 定義Layout日誌欄位

最近在使用log4net的時候有一個簡單的需求,就是自定義個格式化輸出符。這個輸出符是專門用來幫我記錄下業務ID、業務型別的。比如,“businessID:328593,businessType: orderID”。類似這樣的輸出日誌。這些日誌會被elk agent提取送到日誌中心ES中,用來進行輔助排障。

基於spring的schema定義擴充套件()

上文分析了spring如何解析xml中標籤 自定義schema規範約束 新建test-schema.xsd檔案定義如下內容 <xsd:schema xmlns="http://www.myhost.com/schema/demo" xmlns:xsd="htt