• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - Instagram 等图片列表

[复制链接]
菜鸟教程小白 发表于 2022-12-11 17:58:07 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想制作一个可滚动的图像列表,例如带有 4 列的 instagram。我创建了一个带有 ImageView 的 Collection View http://prntscr.com/d15rnx .但我得到了这个结果 - http://prntscr.com/d15tsq 代码 -

// MARK: - UICollectionViewDataSource protocol

// tell the collection view how many cells to make
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return self.items.count
}

// make a cell for each cell index path
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    // get a reference to our storyboard cell
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! MyCollectionViewCell

    // Use the outlet in our custom class to get a reference to the UILabel in the cell
    cell.imageView.image = UIImage(named: "main/p\(self.items[indexPath.item].code)/main/main.jpg")
    print("main_card_images/p\(self.items[indexPath.item].code)/main/main")
    return cell
}

// MARK: - UICollectionViewDelegate protocol

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    // handle tap events
    print("You selected cell #\(indexPath.item)!")
    print(self.items[indexPath.item])
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let yourNextViewController = (segue.destination as! ViewControllerCard)
    let indexPath = collectionView.indexPath(for: sender as! UICollectionViewCell)
    yourNextViewController.mainCardImage = self.items[(indexPath?.item)!]
}



Best Answer-推荐答案


确保您已将单元间距设置为 0,然后您所要做的就是实现:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

      return(collectionView.bounds.size.width/4,collectionView.bounds.size.height/4)
}

这会将所有单元格的大小调整为等于 UICollectionView 宽度的 1/4,从而在每行中创建 4 个单元格(高度值的 1/4 只是因为我喜欢这些类型的对称性用户界面)。如果单元格的数量似乎比这少,那是因为项目间的间距没有设置为 0。如果你想要项目间的间距,只需从上面函数中返回的宽度值中减去该值

或者

您可以实现自己的自定义流布局,但上述解决方案要简单得多。

关于ios - Instagram 等图片列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40342212/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap