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)
}
这个想法是在导航栏中均匀分布项目。
我考虑过使用一组视图并将其作为属性传递,但这对我来说看起来很糟糕。有没有办法和我上面的例子一样,或者有更好的方法吗?
解决方案
像这样 :-
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)
}
}
推荐阅读
- html - 每当单击按钮时如何阻止页面向上滚动?
- docker - 如何在终端中查看命令,从 vs code 命令托盘运行
- docker - 如何从客户端访问 google kubernetes 引擎服务
- discord - 如何访问我的机器人正在运行的当前公会名称和 ID?
- ffmpeg - 将 PRORES 视频上的音频 5.1 正确转换为立体声音频
- android-studio - 通过数组列表在 google mapfragment 上显示多个标记
- rust - 如何返回 &str,避免“借用时临时价值下降”
- javascript - 预期:401 收到:200
- 3d - WebGL 和 glMatrix 最小示例,带有外观和透视变换
- ansible - 对象导入失败:收到错误请求 (400) - {'playbook': ['Playbook not found for project.']}。通过 awxkit