如何使用swift 4显示像facebook上传图片这样的collectionView?

Posted

技术标签:

【中文标题】如何使用swift 4显示像facebook上传图片这样的collectionView?【英文标题】:How to show a collectionView like facebook upload image using swift 4? 【发布时间】:2018-04-30 11:26:25 【问题描述】:

您好,我想完全按照上图显示 collectionView。我知道它负责 UICollectionViewFlowLayout,但无法做到。非常感谢您的帮助。这是我的代码

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
     let yourWidth = (collectionView.bounds.width - 4) / 3.0
     let yourHeight = yourWidth
     return CGSize(width: yourWidth, height: yourHeight)

【问题讨论】:

那么两个项目然后三个? 请查看THIS ANSWER。他们在那里提到了为什么collectionView.bounds.width 它总是会返回相同的数字 600px。他们还给出了一个清晰的例子,你需要做什么才能获得正确的宽度。我希望我能帮上一点忙 :) 【参考方案1】:

你的答案在你的问题中,兄弟缺少一些条件

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

        switch indexPath.item 
        case 0,1:
            return CGSize(width: (UIScreen.main.bounds.width - 16) / 2, height: (UIScreen.main.bounds.width - 16) / 2)
        default:
            return CGSize(width: (UIScreen.main.bounds.width - 32) / 3, height:  (UIScreen.main.bounds.width) / 3)
        
    

【讨论】:

非常感谢@JeeVan TiWari 先生,一切都会好起来的。 先生,我上传了一张图片。你能告诉我如何显示像该图像这样的集合视图。 可以通过 uicollectionviewlayout 来完成 点此链接了解iosapptemplates.com/blog/swift-programming/…【参考方案2】:

如果这是您正在寻找的东西,那么使用UICollectionViewFlowLayout 很容易做到

我使用的单元格是 1:1 的比例,所以宽度和高度相同,您可以使用填充和项目间距等来获得所需的效果。

您的控制器必须符合UICollectionViewDelegateFlowLayout 协议

在我的测试应用中,我执行了以下操作:

override func viewDidLoad() 
    let layout = UICollectionViewFlowLayout()
    layout.minimumLineSpacing = 5
    layout.minimumInteritemSpacing = 5
    let collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout)
    collectionView.delegate = self
    collectionView.dataSource = self
    collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "ident")

    view.addSubview(collectionView)


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
    let item = indexPath.item
    let width = collectionView.bounds.size.width
    let padding:CGFloat = 5
    if item < 2 
        let itemWidth:CGFloat = (width - padding) / 2.0
        return CGSize(width: itemWidth, height: itemWidth)
     else 
        let itemWidth:CGFloat = (width - 2 * padding) / 3.0
        return CGSize(width: itemWidth, height: itemWidth)
    


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


func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ident", for: indexPath)
    cell.backgroundColor = .red
    return cell

【讨论】:

是的,我想要这样。我正在检查,先生 先生,我上传了一张图片。你能告诉我如何显示像该图像这样的集合视图。 为此,您必须创建一个自定义 UICollectionViewLayout 类,其中包含所有必须覆盖的方法...相当多的工作:)

以上是关于如何使用swift 4显示像facebook上传图片这样的collectionView?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 4 中使用 Alamofire 上传具有其他参数的多个图像

使用 FBSDKProfileExpressionKit 上传 Facebook 个人资料图片 - swift 3.0

我怎样才能像这样的 Facebook 帖子一样显示专辑图片?

使用 iOS SDK 将大型视频上传到 Facebook

Swift UIDocumentPickerViewController 没有像操作表弹出一样显示

当我在 Facebook 上分享博主的文章时,缩略图不显示