gpt4 book ai didi

ios - 使用图像上传 Swift 动态调整 UICollectionViewCell 的大小

转载 作者:行者123 更新时间:2023-11-29 00:29:53 27 4
gpt4 key购买 nike

我想知道动态调整 UICollectionViewCell 尺寸的最佳方法(Swift 3)。我将异步图像上传到 ViewController,它实现了 UICollectionView 的适当协议(protocol)。图片的大小各不相同,因此我需要在加载 UIImageView 数据后设置单元格尺寸。我对 collectionview 本身的布局选项持开放态度,但首先我想获得正确的单元尺寸。

我知道已经有一些类似的帖子,但我想知道在 Swift 3 中执行此操作的最合适方法,但我还不能完全找到正确的方法。

是否可以在 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {} 方法中动态调整大小?或者,是否可以在加载整个 View 时设置自动调整大小选项?

这是我目前的相关方法,CollectionView 的所有静态大小:

override func viewDidLoad() {
super.viewDidLoad()
ExitNameLabel.text = exitName
let layout:UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.itemSize = CGSize(width: 120 , height: 120)
self.imagesCollectionView.setCollectionViewLayout(layout, animated: true)
exitLocationDetails.text = exitLocation
imagesCollectionView.delegate = self
imagesCollectionView.dataSource = self
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
return imageUrls.count
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell:ImageCollectionViewCell = imagesCollectionView.dequeueReusableCell(withReuseIdentifier: "imageCell", for: indexPath) as! ImageCollectionViewCell

if (images_cache[imageUrls[indexPath.row]] != nil) {
cell.imageCell.image = images_cache[imageUrls[indexPath.row]]
} else {
loadImage(imageUrls[indexPath.row], imageview:cell.imageCell)
}
return cell
}


func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}

func collectionView(collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let screenSize: CGRect = UIScreen.main.bounds
let width = screenSize.width
return CGSize(width: CGFloat(width), height: imagesCollectionView.bounds.size.height)
}

感谢您帮助 iOS 新手 :)

最佳答案

试试这个

if (images_cache[imageUrls[indexPath.row]] != nil) {
cell.imageCell.image = images_cache[imageUrls[indexPath.row]]
cell.imageCell.contentMode = .scaleAspectFit
} else {
loadImage(imageUrls[indexPath.row], imageview:cell.imageCell)
}

关于ios - 使用图像上传 Swift 动态调整 UICollectionViewCell 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42185027/

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