2016-06-26 9 views
0

別のコントローラでサブビューとしてUICollectionViewを追加しました。私はそれのフレームを設定し、UICollectionViewフローは水平です。私はアイテムの1行だけを表示し、水平方向にスクロールする必要があります。しかし、私は垂直にいくつかの行を取得します。私はいくつかの異なる方法を試しましたが、それは私を助けません。私はそれについての情報を検索しましたが、これらの方法も私を助けません。どうすれば修正できますか?UICollectionViewの動作がサブビューとして正しくありません

マイコード

override func viewDidLoad() { 
    super.viewDidLoad() 
    addUIElements() 
} 

// MARK: - UI functions 

private func addUIElements() { 
    view.addSubview(headerView) 

    let lifelineController = StoryboardManager.lifeLineStoryboard.instantiateViewControllerWithIdentifier("LifeLineCollectionViewController") as! LifeLineCollectionViewController 
    addChildViewController(lifelineController) 
    lifelineController.view.frame = CGRect(x: 0, y: headerView.frame.height, width: headerView.frame.width, height: 100) 
    view.addSubview(lifelineController.view) 
    lifelineController.didMoveToParentViewController(self) 
} 

レイアウトコード

extension LifeLineCollectionViewController: UICollectionViewDelegateFlowLayout { 

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
     let value = 50 
     return CGSize(width: value, height: value) 
    } 

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat { 
     return 8 
    } 

// func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { 
//  return CGSize(width: collectionView.frame.width, height: 376) 
// } 

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets { 
     let top: CGFloat = 48 
     let cornerValue: CGFloat = 8 
     let bottom: CGFloat = 40 
     return UIEdgeInsets(top: top, left: cornerValue, bottom: bottom, right: cornerValue) 
    } 
} 

私の結果は enter image description here

IがviewDidAppearでUICollectionViewにそのフレームを印刷し、私は完全に異なる結果508の高さを得るが、私136を高さに設定する。

+0

の助けを借りて、それを解決しましたか – Wain

+0

@Wainはレイアウトコードで賭けてください – Alexander

答えて

0

私は、レイアウト、フレームの高さ、アイテムの高さとインセット値は何ですか?SnapKit

private func addUIElements() { 
    view.addSubview(headerView) 

    let lifelineController = StoryboardManager.lifeLineStoryboard.instantiateViewControllerWithIdentifier("LifeLineCollectionViewController") as! LifeLineCollectionViewController 
    addChildViewController(lifelineController) 
    view.addSubview(lifelineController.view) 
    lifelineController.view.snp_makeConstraints { (make) in 
     make.width.equalTo(headerView.frame.width) 
     make.height.equalTo(136) 
     make.centerX.equalTo(view.snp_centerX) 
     make.top.equalTo(headerView.snp_bottom) 
    } 
    lifelineController.didMoveToParentViewController(self) 
} 
関連する問題