如何使用泛型数组 - SwiftUI
How to use a generic array - SwiftUI
您好,我正在创建一个需要考虑数组进行操作的组件。
我创建了一个模型来显示这样的数组
struct FeaturedWorksModel: Identifiable {
var id = UUID()
var image: String
var title: String
}
var featuredWorksItems: [FeaturedWorksModel] = [
FeaturedWorksModel(image: "slider1", title: "TAGLIO CREATIVO"),
FeaturedWorksModel(image: "slider4", title: "LOREM IPSUM"),
FeaturedWorksModel(image: "slider3", title: "NEQUE EST DOLOR"),
FeaturedWorksModel(image: "slider2", title: "CONSECTETUR, INTEGER ERAT AUGUE ")
]
现在我的组件也可以与其他数组一起使用,我想知道如何在组件初始化参数中定义一个通用数组,以便重用组件,甚至引用我正在使用的数组以外的数组这一刻
这是我正在使用的组件,我必须将引用数组传递给它才能工作
struct SmoothPager: View {
@Binding var offset: CGPoint
var body: some View {
HStack(spacing: 10) {
ForEach(featuredWorksItems.indices) { works in
Capsule()
.fill(getIndex() == works ? .white : .gray)
.frame(width: getIndex() == works ? 15 : 7, height: 7)
}
}
.overlay(
Capsule()
.fill(.white)
.frame(width: 15, height: 7)
.offset(x: getOffset())
, alignment: .leading
)
}
func getIndex()-> Int {
let index = Int(round(Double(offset.x / screen.width)))
return index
}
func getOffset()-> CGFloat {
let progress = offset.x / screen.width
return 17 * progress
}
}
在这种情况下,我使用的是 featuredWorksItems.indices
,但我想让该组件也可与其他类似数组一起使用。在此结构中传递通用数组参数的最佳方式是什么?
你的意思是像
struct SmoothPager<Element: Identifiable>: View {
@Binding private var offset: CGPoint
private let elements: [Element]
init(elements: [Element], offset: Binding<CGPoint>) {
self.elements = elements
self._offset = offset
}
var body: some View {
HStack(spacing: 10) {
ForEach(elements.indices) { works in
Capsule()
.fill(getIndex() == works ? .white : .gray)
.frame(width: getIndex() == works ? 15 : 7, height: 7)
}
}
.overlay(
Capsule()
.fill(.white)
.frame(width: 15, height: 7)
.offset(x: getOffset())
, alignment: .leading
)
}
func getIndex()-> Int {
let index = Int(round(Double(offset.x / UIScreen.main.bounds.width)))
return index
}
func getOffset()-> CGFloat {
let progress = offset.x / UIScreen.main.bounds.width
return 17 * progress
}
}
您好,我正在创建一个需要考虑数组进行操作的组件。
我创建了一个模型来显示这样的数组
struct FeaturedWorksModel: Identifiable {
var id = UUID()
var image: String
var title: String
}
var featuredWorksItems: [FeaturedWorksModel] = [
FeaturedWorksModel(image: "slider1", title: "TAGLIO CREATIVO"),
FeaturedWorksModel(image: "slider4", title: "LOREM IPSUM"),
FeaturedWorksModel(image: "slider3", title: "NEQUE EST DOLOR"),
FeaturedWorksModel(image: "slider2", title: "CONSECTETUR, INTEGER ERAT AUGUE ")
]
现在我的组件也可以与其他数组一起使用,我想知道如何在组件初始化参数中定义一个通用数组,以便重用组件,甚至引用我正在使用的数组以外的数组这一刻
这是我正在使用的组件,我必须将引用数组传递给它才能工作
struct SmoothPager: View {
@Binding var offset: CGPoint
var body: some View {
HStack(spacing: 10) {
ForEach(featuredWorksItems.indices) { works in
Capsule()
.fill(getIndex() == works ? .white : .gray)
.frame(width: getIndex() == works ? 15 : 7, height: 7)
}
}
.overlay(
Capsule()
.fill(.white)
.frame(width: 15, height: 7)
.offset(x: getOffset())
, alignment: .leading
)
}
func getIndex()-> Int {
let index = Int(round(Double(offset.x / screen.width)))
return index
}
func getOffset()-> CGFloat {
let progress = offset.x / screen.width
return 17 * progress
}
}
在这种情况下,我使用的是 featuredWorksItems.indices
,但我想让该组件也可与其他类似数组一起使用。在此结构中传递通用数组参数的最佳方式是什么?
你的意思是像
struct SmoothPager<Element: Identifiable>: View {
@Binding private var offset: CGPoint
private let elements: [Element]
init(elements: [Element], offset: Binding<CGPoint>) {
self.elements = elements
self._offset = offset
}
var body: some View {
HStack(spacing: 10) {
ForEach(elements.indices) { works in
Capsule()
.fill(getIndex() == works ? .white : .gray)
.frame(width: getIndex() == works ? 15 : 7, height: 7)
}
}
.overlay(
Capsule()
.fill(.white)
.frame(width: 15, height: 7)
.offset(x: getOffset())
, alignment: .leading
)
}
func getIndex()-> Int {
let index = Int(round(Double(offset.x / UIScreen.main.bounds.width)))
return index
}
func getOffset()-> CGFloat {
let progress = offset.x / UIScreen.main.bounds.width
return 17 * progress
}
}