【问题标题】:How to add Picker for images in SwiftUI on WatchOS如何在 WatchOS 上的 SwiftUI 中为图像添加选取器
【发布时间】:2021-03-17 19:20:25
【问题描述】:

我正在尝试将我的手表应用从情节提要迁移到 SwiftUI。在情节提要中有一个WKInterfacePicker,我将高度设置为100,然后将图像作为WKImage 对象添加到WKPickerItem 中。

当我尝试用 SwiftUI 做同样的事情时,我得到了不同的结果。我使用了这段代码:

Picker("", selection: $viewModel.temperature) {
    ForEach(1 ..< 5) { i in
        Image("temp-\(i)")
            .resizable()
            .aspectRatio(contentMode: .fill)
    }
}
.frame(height: 100)

.fill 和 .fit 都不会使单个图像占据选择器的整行,就像使用 WKInterfacePicker 时一样。我做错了什么?

【问题讨论】:

  • 你想要的结果是什么?您是否希望图像在保持纵横比大小的同时占据整行,但也被裁剪到行的边界?
  • @TamásSengel 没错,就像旧版控件自动完成的一样。

标签: swiftui watchos watchos-7


【解决方案1】:

使用this center-crop answer from vacawama。

图像的高度是一个神奇的数字,因为它不会改变(可能会随着 watchOS 的更新而改变),如果选取器中有 GeometryReader,它会显示奇怪的 UI 行为。

Picker("", selection: $temperature) {
    ForEach(1 ..< 5) { i in
        Image("temp-\(i)")
            .resizable()
            .scaledToFill()
            .frame(height: 30, alignment: .center)
            .clipped()

    }
}
.frame(height: 100)

【讨论】:

    猜你喜欢
    • 2021-11-10
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多