SwiftUI 上 Image 中的 frame() 对于每个设备有不同的大小吗?
will frame() in Image on SwiftUI has different size for each devices?
我有一个在 swiftUI 中使用图像查看的代码,我想知道 frame() 函数是否会为每个设备生成不同的大小(例如 iPhone 8、Xs、Xs+ 等)
struct CircleImage : View {
var body: some View {
Image("jorge")
.resizable()
.frame(width: 100, height: 100)
.clipShape(Circle())
.overlay(
Circle().stroke(Color.white, lineWidth: 4))
.shadow(radius: 10)
}
}
我当然有 Xcode 11 和 Beta 版,但我没有 Catalina,因为我必须使用 Mojave 进行工作,而 Catalina 不支持它。所以我找不到任何关于 SwiftUI Preview 的线索。
我还尝试使用多个模拟器(使用 8 和 Xs+)查看上面的代码,我看到图像似乎具有相同的大小,但我不确定。
如果尺寸相同,屏幕的标准尺寸是多少?如果没有,我如何找到每个屏幕的标准?
我不确定我是否理解你的问题,但我会尽力回答。当您指定一个框架(宽度:100,高度:100)时,SwiftUI 会将其设置为 100x100 点。无论哪种设备。如果您想适应设备的可用 space,请查看我在另一个问题中发布的示例:
此外,这里是获取当前设备屏幕尺寸的文档:
屏幕的边界矩形,以磅为单位:
https://developer.apple.com/documentation/uikit/uiscreen/1617838-bounds
物理屏幕的边界矩形,以像素为单位。
https://developer.apple.com/documentation/uikit/uiscreen/1617810-nativebounds
我有一个在 swiftUI 中使用图像查看的代码,我想知道 frame() 函数是否会为每个设备生成不同的大小(例如 iPhone 8、Xs、Xs+ 等)
struct CircleImage : View {
var body: some View {
Image("jorge")
.resizable()
.frame(width: 100, height: 100)
.clipShape(Circle())
.overlay(
Circle().stroke(Color.white, lineWidth: 4))
.shadow(radius: 10)
}
}
我当然有 Xcode 11 和 Beta 版,但我没有 Catalina,因为我必须使用 Mojave 进行工作,而 Catalina 不支持它。所以我找不到任何关于 SwiftUI Preview 的线索。
我还尝试使用多个模拟器(使用 8 和 Xs+)查看上面的代码,我看到图像似乎具有相同的大小,但我不确定。
如果尺寸相同,屏幕的标准尺寸是多少?如果没有,我如何找到每个屏幕的标准?
我不确定我是否理解你的问题,但我会尽力回答。当您指定一个框架(宽度:100,高度:100)时,SwiftUI 会将其设置为 100x100 点。无论哪种设备。如果您想适应设备的可用 space,请查看我在另一个问题中发布的示例:
此外,这里是获取当前设备屏幕尺寸的文档:
屏幕的边界矩形,以磅为单位: https://developer.apple.com/documentation/uikit/uiscreen/1617838-bounds
物理屏幕的边界矩形,以像素为单位。 https://developer.apple.com/documentation/uikit/uiscreen/1617810-nativebounds