首页 > 解决方案 > 样式视图传递给 SwiftUI 中的自定义视图

问题描述

我想做的是使用这样的自定义View:传递给的视图的数量或类型Nav可以不同。

Nav(
    width: 200
) {
    NavButton("Item 1", action: {self.someAction}, isActive: true)
    NavButton("Item 1", action: {self.someAction}, isActive: false)
    NavTitle("Page 1")
}

并且它会给出与以下相同的结果:

HStack {
    NavButton("Item 1", action: {self.someAction}, isActive: true)
    .frame(width: 200 / 3)
    NavButton("Item 1", action: {self.someAction}, isActive: false)
    .frame(width: 200 / 3)
    NavTitle("Page 1")
    .frame(width: 200 / 3)
}

这个想法是在导航栏中均匀分布项目。

我考虑过使用一组视图并将其作为属性传递,但这对我来说看起来很糟糕。有没有办法和我上面的例子一样,或者有更好的方法吗?

标签: swiftswiftui

解决方案


像这样 :-

import SwiftUI

struct ContentView: View {


    var body: some View {

        HStack {
            CustomText(text: "kjahsfgdi f")
            Spacer()
            CustomText(text: "abc")
            Spacer()
            CustomText(text: "abc")
        }

    }
}

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

struct CustomText : View{
    @State var text: String
    var body: some View {
        Text(text)
            .lineLimit(nil)
            .frame(width: 100, height: nil, alignment: .center)
    }
}

推荐阅读