我们可能在一些情况下需要获取SwiftUI的一个View的尺寸,我们可以用以下方法获取:

.overlay(GeometryReader { geo -> AnyView in
                    DispatchQueue.main.async{
                        self.displayWidth = geo.size.width
                        self.displayHeight = geo.size.height
                    return AnyView(EmptyView())

让我们来举个例子!我们来获取一个Text的View的尺寸以及其他参数:

struct ContentView: View {
    @State private var displayWidth: CGFloat = 0
    @State private var displayHeight: CGFloat = 0
    @State private var widthAndHeight = ""
    var body: some View {
        VStack {
            Text("Hello, world!")
                .padding()
                .overlay(GeometryReader { geo -> AnyView in
                    DispatchQueue.main.async{
                        displayWidth = geo.size.width
                        displayHeight = geo.size.height
                        widthAndHeight = geo.size.debugDescription
                    return AnyView(EmptyView())
            Text("宽度:\(displayWidth)")
            Text("高度:\(displayHeight)")
            Text("宽高:\(widthAndHeight)")

界面如下:
请添加图片描述

这里需要注意的是:这里的尺寸是包括padding的,也就是说,附加在这个View视图上的东西的尺寸超过本身尺寸的话,也会计算在内。

var width: CGFloat = UIScreen.main.bounds.width var height: CGFloat = UIScreen.main.bounds.height 这样就可以得到CGFloat格式的数据,进行一些处理。比如画格子之类的。 nativeBounds var screenBounds. view的通用属性    1.控件的宽高                       android:layout_width="30dp"                       android:layout_height="30dp"                      值可以是:                             wrap_content           ... 核心思想就是,获取ScrollView的下拉偏移,让图片的高度变为原图片高度+偏移量 在本测试demo中,顶部图片视图和列表视图,都放在ScrollView中,为获得ScrollView的下拉偏移,需要用GeometryReader来包裹顶部图片视图,来获得父视图ScrollView的位置和大小 ScrollView { GeometryReader { geometry in 为了将工作表的默认大高度更改为不同的预定义值,在工作表内容闭包内的最外层视图中使用了一个视图修饰符,称为presentationDetents(_😃. 我们应该提供给它的参数是一个Set名为 的新类型的值PresentationDetent。有两个预定义的值指定工作表的高度;large,这是默认使用的medium,它将屏幕的大约一半高度分配给工作表。在下面的代码片段中,您可以看到带有表示定位值的presentationDetents(_:)修饰符:medium。 Objective-c和swift: NSString----->Stirng         NSArray------->Array      NSDictionary------>Dictionary     Int Float Doulbe Bool------>NSNumber 这些可以用as强制互相转换,比如你将swift中的Array转换成了OC中的NSArray,你就可以调用N 在Activity的onCreate()方法中,使用View.getWidth()、View.getHeiht()方法来获取View尺寸看似没有问题,但其实并不能获取正确的结果,返回的尺寸为0.这是因为在执行onCreate()方法的时候,界面处于不可见状态,需要加载的组件还没有绘制出来,无法获取真实的尺寸。 要想在View绘制之前获取它的尺寸可以采用以下三种方法: