1

タグ フロー レイアウトを作成しようとしています。これを行うには、非常に優れたチュートリアルhttps://codentrick.com/create-a-tag-flow-layout-with-uicollectionview/に従いました。

フロー レイアウトを作成してカスタマイズすることはできましたが、セルが適切に配置されない場合があります。こちらはiPhone 4Sのスクリーンショットです。ヘッダーセクションも2つあります

ここに画像の説明を入力

セクション 1 でわかるように、タグが正しく配置されていません。この問題の原因がわかりません。

これが私のカスタムフローレイアウトクラスです

import UIKit

class FlowLayout: UICollectionViewFlowLayout {

    override func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
        var newAttributesForElementsInRect = [UICollectionViewLayoutAttributes]()        
        // unwrap super's attributes
        guard let attributesForElementsInRect = super.layoutAttributesForElementsInRect(rect) else { return nil }

        // modify attributes

        var leftMargin: CGFloat = 8.0;

        for attributes in attributesForElementsInRect {

            let itemAttributesCopy = attributes.copy() as! UICollectionViewLayoutAttributes

           print("attCopy",itemAttributesCopy.frame.size.width)
            print("left",leftMargin)
            print("collWidth",self.collectionView?.frame.size.width)

            print("sectionInset",self.sectionInset.left)

            if( itemAttributesCopy.frame.size.width + leftMargin > self.collectionView?.frame.size.width)
            {
                leftMargin = 8.0
            }
            if (itemAttributesCopy.frame.origin.x == self.sectionInset.left) {
                leftMargin = self.sectionInset.left
            } else {

                 print("itemAttributeCopy",itemAttributesCopy.frame)

                var newLeftAlignedFrame = itemAttributesCopy.frame
                newLeftAlignedFrame.origin.x = leftMargin
                itemAttributesCopy.frame = newLeftAlignedFrame
                 print("newFrame",newLeftAlignedFrame)
            }
            leftMargin += itemAttributesCopy.frame.size.width + 8
             print("finalleftMargin",leftMargin)



            newAttributesForElementsInRect.append(itemAttributesCopy)
        }

        return newAttributesForElementsInRect
    }
}

だから私はこの問題を理解するのに助けが必要です.

よろしくランジット

4

0 に答える 0