样式视图传递到SwiftUI中的自定义视图

时间:2020-02-19 06:57:32

标签: swift 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)
}

想法是在导航栏中均匀放置项目。

我曾考虑过使用视图数组并将其作为属性传递,但是这对我来说似乎很糟糕。有没有一种方法可以与上面的示例相同,或者有更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

喜欢这个:-

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)
    }
}