UICollectView自定義Layout布局

2021-08-10 05:57:09 字數 1664 閱讀 1511

關於uicollectview自定義layout布局,首先需要定義類繼承uicollectionviewflowlayout,需要重寫的方法:

//collectview第一次布局的時候呼叫

//collectview重新整理(reload)的時候會再次呼叫

//子類必須要呼叫[super preparelayout]

- (void)preparelayout;

//根據指定rect,返回該rect區域內cell的相關資訊,uicollectionviewlayoutattributes -> cell的相關資訊(frame、center、size、transform3d、bounds、transform等相關資訊)

- (nullable nsarray

<__kindof uicollectionviewlayoutattributes> *)layoutattributesforelementsinrect:(cgrect)rect;

//在滾動的時候是否允許重新整理布局,預設為no

- (bool)shouldinvalidatelayoutforboundschange:(cgrect)newbounds;

//當手指抬起的時候呼叫,確定最終偏移量

- (cgpoint)targetcontentoffsetforproposedcontentoffset:(cgpoint)proposedcontentoffset withscrollingvelocity:(cgpoint)velocity;

//子類必須要重寫此方法,計算內容範圍,返回collectview的內容區域

- (cgsize)collectionviewcontentsize;

實現如下圖的乙個自定義layout布局:

自定義layout:

//不需要處理

- (void)preparelayout

//不需要處理,直接呼叫super返回內容範圍

- (cgsize)collectionviewcontentsize

- (nullable nsarray

<__kindof uicollectionviewlayoutattributes> *)layoutattributesforelementsinrect:(cgrect)rect

return attrs;

}//在滾動的時候允許重新整理布局

- (bool)shouldinvalidatelayoutforboundschange:(cgrect)newbounds

//確定最終偏移量,定位cell顯示居中

- (cgpoint)targetcontentoffsetforproposedcontentoffset:(cgpoint)proposedcontentoffset withscrollingvelocity:(cgpoint)velocity

}//3. 更新contentoffset,則正好將item居中顯示

return cgpointmake(proposedcontentoffset.x + mincenterx, proposedcontentoffset.y);

}

自定義 如何自定義協議

何為自定義協議,其實是相對標準協議來說的,這裡主要針對的是應用層協議 常見的標準的應用層協議如http ftp smtp等,如果我們在網路通訊的過程中不去使用這些標準協議,那就需要自定義協議,比如我們常用的rpc框架 dubbo,thrift 分布式快取 redis,memcached 等都是自定義...

自定義控制項 自定義鐘錶

private context mcontext 畫筆 private paint mpaint 控制項的寬 private int mwidth x方向的圓心座標 private int center 鐘錶的半徑 private int mradio 圓環的寬 private int stroke...

BroadcastReceiver與自定義許可權

在清單檔案中通過進行宣告,然後通過引用自己宣告的許可權 可不引用 示例 在自定義許可權時,通常會指定protectionlevel屬性,常用的如下 normal 預設的,應用安裝前,使用者可以看到相應的許可權,但無需使用者主動授權。dangerous normal安全級別控制以外的任何危險操作。需要...