gpt4 book ai didi

ios - 在 UICollectionView 中,单元格不会位于底部

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:45:52 25 4
gpt4 key购买 nike

注意 结果证明这是一个简单的错误,细胞不会“坐在底部”。然而,这是一个有趣的问题:“如何上下移动单元格。”下面是一个蛮力解决方案:编写您自己的流布局。

令我惊讶的是,唯一的方法是完全继承 UICollectionViewFlowLayout 并在 layoutAttributesForElementsInRect 中编写一些棘手的代码。

这可能会对将来的某人有所帮助,因为 layoutAttributesForElementsInRect 的示例代码很少。希望对您有所帮助。

--

事实证明,我的单元格不会位于底部的原因是我之前在我的 UICollectionViewController 中有这个...

-(void)viewDidLoad
{
[super viewDidLoad];
// the following code is very useful to, for example,
// "nudge short lists towards the middle..." - if you want the list
// to more sit in the middle of the screen, when only a few items.
cvHeight = CGRectGetHeight(self.collectionView.bounds);
[self.collectionView setContentInset:
UIEdgeInsetsMake(cvHeight * 0.175, 0, cvHeight * 0.30, 0) ]; //top,l,b,r
}

当然,当我更改为“全 View 单元格大小”(每个屏幕一个单元格)时,该代码会失败。


我有一个简单的 UICollection View ,它是 iPhone 的宽度和大约 250 高。单元格与 Collection View 的大小完全相同。

细胞不会居中,它们总是高高在上。 (即,在 View 之外。)

enter image description here

Storyboard中我的收藏 View “大小”都为零。可能是什么问题?

最佳答案

这是解决问题的一种“蛮力”方法——编写您自己的 FlowLayout!!

有效...

class SimpleFlowLayout: UICollectionViewFlowLayout {


override init() {
super.init()

initialize()
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initialize()
}

func initialize() {
self.scrollDirection = .horizontal
self.minimumInteritemSpacing = 0.0
self.minimumLineSpacing = 0.0

}

override var collectionViewContentSize: CGSize {

return super.collectionViewContentSize
}

override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {


let allItems = super.layoutAttributesForElements(in: rect)
for attribute in allItems! {
print ("attribute.frame.origin.y ..... \(attribute.frame.origin.y)")
attribute.frame = CGRect(x: attribute.frame.origin.x,
y: attribute.frame.origin.y + 34,
width: attribute.frame.size.width,
height: attribute.frame.size.height)

// "go figure" ... add 34
}

return allItems;

}

你“设置”一个 UICollectionViewFlowLayout 的方式基本上是这样的......

class YourFancyDisplay: UICollectionViewController {

override func viewDidLoad() {
super.viewDidLoad()

collectionView!.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)
collectionView!.collectionViewLayout = SimpleFlowLayout()
...

关于ios - 在 UICollectionView 中,单元格不会位于底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24916006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com