欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS 解決UICollectionView 計(jì)算 Cell 大小的問(wèn)題

 更新時(shí)間:2016年07月22日 09:38:47   投稿:lqh  
本文主要介紹iOS UICollectionView,這里給大家一個(gè)實(shí)例代碼作為參考,并指出經(jīng)常遇到的問(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ā)的朋友。

相關(guān)文章

最新評(píng)論