iOS 解決UICollectionView 計(jì)算 Cell 大小的問(wèn)題
前言
API 不熟悉導(dǎo)致的問(wèn)題,想當(dāng)然的去理解果然會(huì)出問(wèn)題,這里記錄一下 UICollectionView 使用問(wèn)題。
正文
陷阱一:minimumLineSpacing、minimumInteritemSpacing
很容易就把這兩個(gè)屬性設(shè)置為 0 ,這兩個(gè)屬性是最小行間距和最小列間距,注意是最小?。∫簿褪钦f(shuō)實(shí)際上可以 > 0 ,并不是間距就是 0
陷阱二:sectionInset
設(shè)置 cell 的邊距。一開(kāi)始我以為是每一個(gè) cell 的邊距,相鄰之間會(huì)疊加效果,實(shí)際上并不是這樣的,這個(gè)屬性只是保證相鄰之間的間距,并不疊加!!
理解了上面兩個(gè)陷阱,我們就可以精確計(jì)算 Cell 的大小了,再來(lái)設(shè)置 itemSize 的大小才會(huì)正確。例如:
let ITEM_MIN_WIDTH: CGFloat = 300 let ITEM_SPACING: CGFloat = 6 func resizeCollectionView(size: CGSize) { if let layout = collectionView?.collectionViewLayout as? UICollectionViewFlowLayout { layout.minimumLineSpacing = ITEM_SPACING layout.minimumInteritemSpacing = ITEM_SPACING var itemCount = Int(size.width / ITEM_MIN_WIDTH) if itemCount == 0 { itemCount = 1 } if itemCount == 1 { layout.itemSize = CGSizeMake(size.width, size.width * 10 / 16) layout.sectionInset = UIEdgeInsetsMake(6, 0, 0, 0) } else { let width = (size.width - CGFloat((itemCount + 1)) * ITEM_SPACING) / CGFloat(itemCount) layout.itemSize = CGSizeMake(width, width * 10 / 16) layout.sectionInset = UIEdgeInsetsMake(ITEM_SPACING, ITEM_SPACING, 0, ITEM_SPACING) } collectionView?.layoutIfNeeded() } }
代碼說(shuō)明:
傳入當(dāng)前 view 的 size ,動(dòng)態(tài)計(jì)算 cell 大小,可以方便的適配 iPhone/iPad ,單列時(shí)隱藏兩邊邊距,多列時(shí)顯示兩邊間隙。
以上就是對(duì)IOS UICollectionView 用法和說(shuō)明,希望能幫助 IOS開(kāi)發(fā)的朋友。
- IOS Xib控件拖拽與頁(yè)面跳轉(zhuǎn)實(shí)例
- iOS實(shí)現(xiàn)百度地圖拖拽后更新位置以及反編碼
- 淺談iOS11新特性:新增拖拽交互體驗(yàn)
- Android ReboundScrollView仿IOS拖拽回彈效果
- IOS使用UICollectionView實(shí)現(xiàn)無(wú)限輪播效果
- IOS 自定義UICollectionView的頭視圖或者尾視圖UICollectionReusableView
- iOS應(yīng)用中UICollectionViewCell定制Button
- IOS簡(jiǎn)單實(shí)現(xiàn)瀑布流UICollectionView
- iOS中關(guān)于Swift UICollectionView橫向分頁(yè)的問(wèn)題
- iOS開(kāi)發(fā)UICollectionView實(shí)現(xiàn)拖拽效果
相關(guān)文章
關(guān)于iOS中屬性變量setter與getter方法的理解
這篇文章主要給大家介紹了關(guān)于iOS中屬性變量setter與getter方法的相關(guān)資料,文章介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06iOS App開(kāi)發(fā)中UISearchBar搜索欄組件的基本用法整理
iOS開(kāi)發(fā)組件中自帶的UISearchBar提供了很多基礎(chǔ)和好用的搜索欄UI功能,下面就來(lái)總結(jié)一下iOS App開(kāi)發(fā)中UISearchBar搜索欄組件的基本用法整理,需要的朋友可以參考下2016-05-05IOS中快速集成短信SDK驗(yàn)證開(kāi)發(fā)(SMSSDK),IOS開(kāi)發(fā)中如何設(shè)置手機(jī)短信驗(yàn)證碼
這篇文章主要介紹了IOS中快速集成短信SDK驗(yàn)證開(kāi)發(fā)(SMSSDK),IOS開(kāi)發(fā)中如何設(shè)置手機(jī)短信驗(yàn)證碼 的相關(guān)資料,需要的朋友可以參考下2016-01-01iOS10 widget實(shí)現(xiàn)3Dtouch 彈出菜單
這篇文章主要介紹了 iOS10 widget實(shí)現(xiàn)3Dtouch 彈出菜單的相關(guān)資料,需要的朋友可以參考下2016-12-12iOS端React Native差異化增量更新的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于iOS端React Native差異化增量更新的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06iOS仿抖音視頻加載動(dòng)畫(huà)效果的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于iOS視頻加載動(dòng)畫(huà)效果的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11iOS開(kāi)發(fā)CGContextRef畫(huà)圖使用總結(jié)
這篇文章主要為大家詳細(xì)介紹了iOS開(kāi)發(fā)CGContextRef畫(huà)圖使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04詳解iOS11關(guān)于導(dǎo)航欄問(wèn)題
本篇文章主要介紹了詳解iOS11關(guān)于導(dǎo)航欄問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10iOS10 App適配權(quán)限 Push Notifications 字體Frame 遇到的問(wèn)題
這篇文章主要介紹了iOS10 App適配權(quán)限 Push Notifications 字體Frame 遇到的問(wèn)題,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09