热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UICollectionView和SwiftUI?

如何解决《UICollectionView和SwiftUI?》经验,为你挑选了2个好方法。

如何使用SwiftUI创建正方形项目的网格(例如在iOS照片库中)?

我尝试了这种方法,但是不起作用:

var body: some View {
    List(cellModels) { _ in
        Color.orange.frame(width: 100, height: 100)
    }
}

列表仍然具有UITableView样式:



1> Maciek Czarn..:

一种可能的解决方案是将您包装UICollectionViewUIViewRepresentable。请参阅合并和创建视图 SwiftUI教程,其中将其包装MKMapView为示例。

到目前为止UICollectionView,SwiftUI中没有类似的东西,并且还没有计划。看到有关该推文的讨论。

要获取更多详细信息,请查看Integrated SwiftUI WWDC视频(〜8:08)。



2> Karol Kulesz..:

QGrid是我创建的一个小型库,该库使用与SwiftUI的List视图相同的方法,通过从标识的数据的基础集合中按需计算其单元格:

假设您已经具有自定义单元格视图,QGrid则最简单的形式就是将它与您体内的这1行代码一起使用View

struct PeopleView: View {
  var body: some View {
    QGrid(Storage.people, columns: 3) { GridCell(person: $0) }
  }
}   

struct GridCell: View {
  var person: Person
  var body: some View {
    VStack() {
      Image(person.imageName).resizable().scaledToFit()
      Text(person.firstName).font(.headline).color(.white)
      Text(person.lastName).font(.headline).color(.white)
    }
  }
}


您还可以自定义默认布局配置:

struct PeopleView: View {
  var body: some View {
    QGrid(Storage.people,
          columns: 3,
          columnsInLandscape: 4,
          vSpacing: 50,
          hSpacing: 20,
          vPadding: 100,
          hPadding: 20) { person in
            GridCell(person: person)
    }
  }
} 

请参考GitHub回购中的演示GIF和测试应用程序:

https://github.com/Q-Mobile/QGrid


推荐阅读
author-avatar
梧桐树信息科技
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有