前提・実現したいこと
SwiftUIでオブジェクトの背景色をグラデーションで表現したいです。
ForEach文でテキストを複数表示させ、RGB値が10ずつあがるようコーディグしたいです。
発生している問題・エラーメッセージ
Initializer 'init(_:id:content:)' requires that 'Double.Stride' (aka 'Double') conform to 'SignedInteger'
該当のソースコード
上のコードはForEachを用いずに書いたものです。
同じものをForEachで書きたいです。
Swift
1import SwiftUI 2 3struct SwiftUIView: View { 4 var body: some View { 5 HStack { 6 VStack { 7 Text("Hello, World!") 8 .background(Color(red: 0/255, green: 1, blue: 1)) 9 Text("Hello, World!") 10 .background(Color(red: 50/255, green: 1, blue: 1)) 11 Text("Hello, World!") 12 .background(Color(red: 100/255, green: 1, blue: 1)) 13 Text("Hello, World!") 14 .background(Color(red: 150/255, green: 1, blue: 1)) 15 Text("Hello, World!") 16 .background(Color(red: 200/255, green: 1, blue: 1)) 17 Text("Hello, World!") 18 .background(Color(red: 250/255, green: 1, blue: 1)) 19 20 } 21 VStack { 22 ForEach(1...6, id: .self){i in 23 Text("Hello, World!") 24 .background(Color(red: i*10/255, green: 1, blue: 1)) 25 } 26 27 } 28 } 29 } 30} 31 32struct SwiftUIView_Previews: PreviewProvider { 33 static var previews: some View { 34 SwiftUIView() 35 } 36} 37
試したこと
Int型の変数iをDouble型に変換した。
iに@State属性がないことが原因かと思い、
Swift
1import SwiftUI 2 3struct SwiftUIView: View { 4 @State private var i = 0 5 var body: some View { 6 7 HStack { 8 VStack { 9 Text("Hello, World!") 10 .background(Color(red: 0/255, green: 1, blue: 1)) 11 Text("Hello, World!") 12 .background(Color(red: 50/255, green: 1, blue: 1)) 13 Text("Hello, World!") 14 .background(Color(red: 100/255, green: 1, blue: 1)) 15 Text("Hello, World!") 16 .background(Color(red: 150/255, green: 1, blue: 1)) 17 Text("Hello, World!") 18 .background(Color(red: 200/255, green: 1, blue: 1)) 19 Text("Hello, World!") 20 .background(Color(red: 250/255, green: 1, blue: 1)) 21 22 } 23 VStack { 24 ForEach(1...6, id: .self){_ in 25 Text("Hello, World!") 26 .background(Color(red: Double(self.i*10/255), green: 1, blue: 1)) 27 i += 10 28 } 29 30 } 31 } 32 } 33} 34 35struct SwiftUIView_Previews: PreviewProvider { 36 static var previews: some View { 37 SwiftUIView() 38 } 39} 40
としましたが、Type '()' cannot conform to 'View'; only struct/enum/class types can conform to protocols
というエラーが出ました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/10 00:46