首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在SWIFT UI小部件中使分隔线高度等于水平堆栈的另一个子级

在SWIFT UI小部件中,可以通过使用Divider()小部件来实现分隔线的效果。要使分隔线的高度等于水平堆栈中的另一个子级,可以使用GeometryReader来获取水平堆栈的尺寸,并将尺寸应用于Divider()的高度。

下面是一个示例代码:

代码语言:txt
复制
import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Hello, World!")
            
            Divider()
            
            HStack {
                Text("Child View 1")
                    .padding()
                    .background(Color.gray)
                
                Divider()
                    .background(GeometryReader { geometry in
                        Color.clear.preference(key: SizeKey.self, value: geometry.size.height)
                    })
                
                Text("Child View 2")
                    .padding()
                    .background(Color.gray)
            }
            .onPreferenceChange(SizeKey.self) { height in
                Divider()
                    .frame(height: height)
                    .background(Color.gray)
            }
        }
    }
}

struct SizeKey: PreferenceKey {
    static var defaultValue: CGFloat = 0
    
    static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
        value = nextValue()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

在上面的代码中,使用了一个GeometryReader来获取HStack的尺寸,然后将尺寸应用于Divider()的高度。通过使用PreferenceKey来传递高度数值,并在onPreferenceChange中对Divider()进行设置。

注意:这只是一个示例代码,具体的使用场景和布局可能会有所不同,需要根据实际情况进行调整。关于SWIFT UI的更多内容,请参考苹果官方文档或相关教程。

希望这个答案能够对您有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券