如何使Swift UI自适应所有屏幕大小和文本大小在swift ui

fsi0uk1n  于 2022-10-31  发布在  Swift
关注(0)|答案(3)|浏览(238)

有谁能告诉我如何在Swift UI中制作响应式UI吗?Swift UI兼容所有设备,使用figma文本(如24),它会显示iphone8和iphone11相同视图

kx1ctssn

kx1ctssn1#

您需要尽量减少应用中硬编码的大小或帧的数量,因为这会使您的应用在不同的手机型号和方向上的响应性降低。以下是一些链接,您可以查看以了解响应式UI:
https://www.youtube.com/watch?v=67ZCQ5ihj_I&t=186s
https://www.youtube.com/watch?v=ALzrixd_hd8
也可以考虑试用一下几何阅读器。下面的文章将深入介绍它是什么以及如何使用它:https://www.hackingwithswift.com/quick-start/swiftui/how-to-provide-relative-sizes-using-geometryreader

f4t66c6m

f4t66c6m2#

一个更好的方法是,在不使用几何阅读器 Package 所有视图的情况下,进行扩展以获得带有和高度的屏幕,这也可以在所有页面上调用,而不必像几何阅读器那样在每个页面上进行扩展。

extension View{
   func getScreenBounds() -> CGRect{
   return UIScreen.main.bounds
   }
}

调用它与几何读取器相同:

.frame(width: getScreenBounds().width * 0.5, height: getScreenBounds().width * 0.5
h9vpoimq

h9vpoimq3#

对于图像,你可以这样做。你可以使用GeometryReader类来使你的图像具有响应性。不要对图像使用硬编码大小。在这个代码片段中,我使用了屏幕宽度的50%,高度也将使用高度的50%。

  • 使用GeometryReader类时也要小心。GeometryProxy返回当前视图的宽度和高度。*
var body: some View {
    GeometryReader { reader in
        VStack {
            Image(contact.imageName)
            .resizable()
            .aspectRatio(contentMode: .fill)
            .frame(width: reader.size.width * 0.5, height: reader.size.width * 0.5)
            .clipped()
            .cornerRadius(reader.size.width)
            .shadow(radius: 10)
        }
    }
}

相关问题