2016-03-30 13 views
0

私はXラベル(またはボタン)があるシナリオを持っています。それらは水平のコレクションビューで表示されます。スクロール可能であってはいけません。問題は、lables/buttonsの数が変更できることです(0〜5)。コレクションビューのアイテム数が異なる場合、アイテムはコレクションビューに表示されます。

完璧なものは、すべての項目に等しい幅を持つStackViewを用いることであろうが、それはiOSの9.必要があるため、私は、それを使用することはできませんので

(Iは、iOS 8.0の互換あまりに-.-が必要)私はスクロールすることができないコレクションビューを構築し、セルの動的な高さと幅を設定したい。

は私が

heightOfLabel = testModeLoginCollectionView.frame.height 
widthOfLabel = testModeLoginCollectionView.frame.width/
        CGFloat(array5.count) 

結果はtestModeLoginCollectionView.frame.width = 568.0 widthOflabel 113.6 array5 = 5つの項目

私は私の細胞の大きさに、このメソッドを使用している私のcollectionViewの高さ/幅を取得します:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 

    let c = CGSizeMake(heightOfLabel!, widthOfLabel!); 
    return c 
    } 

セルの幅を113.6と33.0に調整する必要があります。 Buこれは次のようになります:enter image description here

アスペクトフィット、スケールフィリングなどでちょっと試しましたが、それほど変わっていません。それは大きすぎるか小さすぎます。 enter image description here

誰かがアイデアを持っていますか?コレクションView以外の技術も使用します。

私はいつ私の変数に値を保存しましたか?

override func viewDidLoad() { 

    testModeLoginCollectionView.delegate = self 
    testModeLoginCollectionView.dataSource = self 

    heightOfLabel = testModeLoginCollectionView.frame.height 
    widthOfLabel = testModeLoginCollectionView.frame.width/CGFloat(array5.count) 
    print("testModeLoginCollectionView.frame.width \(testModeLoginCollectionView.frame.width)") 
    print("widthOfLabel \(widthOfLabel)") 

} 

viewDidLayoutSubviewsは、右のフレームを持って見た後、私はにviewDidAppearでそれを試してみましたが、違いはありません

+0

のような同じAPIを持っているのか? – ZeMoon

答えて

1

。 だから、viewDidLayoutSubviewsのreloadDataで行うことができます。 しかし、私は別の解決策を持っている:あなたはhttps://github.com/forkingdog/FDStackView を使用することができ、それはあなたがheightOfLabelとwidthOfLabelの値を格納しているどの時点でuistackview

+0

興味深い私は一見を持っています – kuzdu

+0

viewDidLayoutSubviewsは私のために働いた – kuzdu

関連する問題