collectionViewCells 到 collectionView 位置 x:0, y:0
Posted
技术标签:
【中文标题】collectionViewCells 到 collectionView 位置 x:0, y:0【英文标题】:collectionViewCells to collectionView position x:0, y:0 【发布时间】:2017-05-13 23:04:45 【问题描述】:我遇到了一些关于 collectionViewCells 的布局问题。我正在以编程方式应用布局约束,并且 UICollectionViewCells 没有被固定到我的 collectionView 中的 0,0 位置。请参阅随附的屏幕截图以供参考。提前致谢!
class CurrentUserPlaceDetailsVC: UIViewController, UICollectionViewDelegateFlowLayout
override func viewDidLoad()
super.viewDidLoad()
setupMenuBar()
let menuBar: MenuBar =
let mb = MenuBar()
return mb
()
private func setupMenuBar()
view.addSubview(menuBar)
view.addConstraintsWithFormat("H:|[v0]|", views: menuBar)
view.addConstraintsWithFormat("V:|-64-[v0(150)]", views: menuBar)
var placesTableVC: PlacesTableVC?
class MenuBar: UIView, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout
lazy var collectionView: UICollectionView =
let layout = UICollectionViewFlowLayout()
let cv = UICollectionView(frame: .zero, collectionViewLayout: layout)
cv.backgroundColor = UIColor.green
cv.dataSource = self
cv.delegate = self
return cv
()
let cellId = "cellId"
override init(frame: CGRect)
super.init(frame: frame)
collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: cellId)
addSubview(collectionView)
addConstraintsWithFormat("H:|[v0]|", views: collectionView)
addConstraintsWithFormat("V:|[v0]|", views: collectionView)
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return 4
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath)
cell.backgroundColor = .blue
return cell
required init?(coder aDecoder: NSCoder)
fatalError("init(coder:) has not been implemented")
extension UIView
func addConstraintsWithFormat(_ format: String, views: UIView...)
var viewsDictionary = [String: UIView]()
for (index, view) in views.enumerated()
let key = "v\(index)"
view.translatesAutoresizingMaskIntoConstraints = false
viewsDictionary[key] = view
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: format, options: NSLayoutFormatOptions(), metrics: nil, views: viewsDictionary))
【问题讨论】:
可能重复***.com/questions/43023384/… 【参考方案1】:您需要设置用于初始化UICollectionView
的UICollectionViewFlowLayout
实例的minimumLineSpacing
、headerReferenceSize
和/或sectionInset
。也可以设置contentInset
的UICollectionView
。
试试这个:
lazy var collectionView: UICollectionView =
let layout = UICollectionViewFlowLayout()
layout.minimumLineSpacing = 0
layout.headerReferenceSize = .zero
layout.sectionInset = .zero
let cv = UICollectionView(frame: .zero, collectionViewLayout: layout)
cv.backgroundColor = .green
cv.dataSource = self
cv.delegate = self
cv.contentInset = .zero
return cv
()
【讨论】:
以上是关于collectionViewCells 到 collectionView 位置 x:0, y:0的主要内容,如果未能解决你的问题,请参考以下文章
如何将imageView添加到collectionViewCell中的scrollView
collectionViewCells 到 collectionView 位置 x:0, y:0
使用 PagedView 时如何将 CollectionViewCell 的边缘固定到 CollectionView
过渡到其他collectionviewController时collectionviewCell不会改变