一分鐘學會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