ios - 在 SwiftUI 中调整滚动视图的内容
问题描述
大家好,我正在关注这个关于 SwiftUI 的苹果教程。我已经到了苹果解释如何用图像制作水平滚动视图的地步。
struct CategoryRow: View {
var categoryName: String
var items: [Landmark]
var body: some View {
VStack(alignment: .leading) {
Text(categoryName)
.font(.headline)
.padding(.leading, 15)
.padding(.top, 5)
ScrollView(.horizontal, showsIndicators: false) {
HStack(alignment: .top, spacing: 0) {
ForEach(items) { landmark in
CategoryItem(landmark: landmark)
}
}
}
.frame(height: 185)
}
}
}
正如您从我发布的照片中看到的那样,您可以看到 2 张完整的图像,而一张没有。我希望您能够决定要显示多少完整图像(例如屏幕内的 4 个完整图像)并且它们适合所有设备
(前任 ..
- iPhone 8 -> 4 屏幕上的图像
- iPhone 12 -> 4 屏幕上的图像
)
简而言之,我需要知道如何调整 a 的内容ScrollView
以显示在不同的设备上,例如在我插入的方法中UIKit
使用UICollectionView
and时发生的情况sizeForItemAtIndexPath
.init (width: collectionView.frame.size.width / 4, height : collectionView.frame.size.height)
我怎样才能使用 SwiftUI 获得这个?
解决方案
您可以使用几何阅读器来确定设备的大小,并将图片的方向定制为使用 GeometryReader:
var body -> some View {
GeometryReader { proxy in
if proxy.size.width > 324.0/2.0 {
// Your landmark view but with 4 pictures
MyBigView()
} else {
// Your landmark view but with 3 pictures
MySmallView()
}
}
}
供参考,以下是手表分辨率:
40mm: 394×324 44mm: 448×368 38mm: 340×272 42mm: 390×312 除以 2.0 得到它们的值,而不是像素。
推荐阅读
- sql - SQL 语句仅在使用 1 状态时选择
- python - 调用路由方法时在Flask对象之前使用'@'有什么需要
- django-rest-framework - 在 Django Rest Framework 中过滤相关对象的数据
- azure - 使用 AD 框架 4.5 保护 azure App Service
- server - 连接两个 Arduino Mkr WiFi
- php - Laravel 以用户身份编辑订单
- node.js - 猫鼬模式内部连接在我的情况下没有得到结果
- python - 在包含标题的 hv.Div 元素下方的布局中移动 Holoviews 图表元素
- angular - 具有基本行为的 ngx-admin 基本模板
- python - 创建图形过程控制面板