gpt4 book ai didi

ios - 水平和垂直collectionViews在同一个 View Controller

转载 作者:行者123 更新时间:2023-12-01 16:01:17 24 4
gpt4 key购买 nike

我需要在 viewController 中显示两个 collectionView。

在顶部单行,然后在 View 的其余部分,collectionView 具有垂直滚动和两列。

这是显示两个collectionViews的当前代码:

@IBOutlet weak var collectionViewMarcas: UICollectionView!

var marcas = [Marcas]()

@IBOutlet weak var collectionViewDispositivos: UICollectionView!

var dispositivos = [Dispositivos]()


func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

if collectionView == collectionViewMarcas {
return marcas.count
}

return dispositivos.count



}




func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

// print("MARCA:"+marcas[indexPath.row].nombre)
}


func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {


if collectionView == self.collectionViewMarcas {
let cellMarcas = collectionView.dequeueReusableCell(withReuseIdentifier: "marca", for: indexPath) as! MarcasCollectionViewCell
let foto_marca = marcas[indexPath.row].icono
print(foto_marca)


let url = URL(string: "https://.../iconos/"+foto_marca)

UIImage.loadFrom(url: url!) { image in
cellMarcas.icono_marca.image = image

}


return cellMarcas
}

else {
let cellDisp = collectionView.dequeueReusableCell(withReuseIdentifier: "dispositivo", for: indexPath) as! DispositivosCollectionViewCell

let foto_dispos = dispositivos[indexPath.row].foto_dispositivo
print(foto_dispos)

let modelo = dispositivos[indexPath.row].modelo_del_dispositivo
cellDisp.modelo_disp.text = modelo
let precio = dispositivos[indexPath.row].precio_dispositivo + " €"
cellDisp.precio_disp.text = precio
let marca = dispositivos[indexPath.row].logo_marca
let urlmarca = URL(string: "https://../iconos/"+marca)
UIImage.loadFrom(url: urlmarca!) { image in
cellDisp.marca_logo.image = image

}
let urlfoto = URL(string: "https://.../dispositivos/"+foto_dispos)

UIImage.loadFrom(url: urlfoto!) { image in
cellDisp.foto_disp.image = image

}

return cellDisp
}


}

这里有一个截图:

enter image description here

我试过实现 UICollectionViewDelegateFlowLayout 然后
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let padding: CGFloat = 50
let collectionViewSize = collectionView.frame.size.width - padding

return CGSize(width: collectionViewSize/2, height: collectionViewSize/2)
}

此实现适用于垂直collectionView,但它也改变了水平collectionView。

我怎么能只改变垂直布局?

最佳答案

您需要同时返回 Collection view Size 的 collectionViewLayout 委托(delegate)方法

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

//You only apply the changes to collectionViewMarcas
if collectionView == self.collectionViewMarcas
{
let padding: CGFloat = 50
let collectionViewSize = collectionView.frame.size.width - padding

return CGSize(width: collectionViewSize/2, height: collectionViewSize/2)
}

// Here Below Line You need To return collectionViewDispositivos cell size
return CGSize(width: 60, height: 60)
}

关于ios - 水平和垂直collectionViews在同一个 View Controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60787107/

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