#swiftui
#swiftui
Вопрос:
Это мой массив некоторой записи, мне нужно знать, могу ли я прочитать размер этой записи без использования GeometryReader, например ширину записи?
var body: some View {
let arrayOfRec = [Rectangle().frame(width: 100, height: 100), Rectangle().frame(width: 200, height: 200)]
VStack
{
ForEach(0..<arrayOfRec.count) { index in
arrayOfRec[index]
}
}
}
Ответ №1:
К сожалению, не представляется возможным получить ширину и высоту прямоугольника без geometry reader в чистом SwiftUI. Я пробовал методы, которые были привязаны к этой форме, но ничего не привело к размеру.
Неизвестно, каков вариант использования, но можно создать пользовательский объект, который содержит ширину и высоту прямоугольника.
struct Rectangle_TEST {
var rectangle: Rectangle
var width: CGFloat
var height: CGFloat
init(width: CGFloat, height: CGFloat) {
self.width = width
self.height = height
self.rectangle = Rectangle()
}
func getView(color: Color) -> some View {
return self.rectangle
.fill(color)
.frame(width: self.width, height: self.height)
}
}
struct ContentView: View {
var body: some View {
let arrayOfRec: [Rectangle_TEST] = [Rectangle_TEST(width: 100, height: 100), Rectangle_TEST(width: 200, height: 200)]
VStack {
ForEach(0..<arrayOfRec.count) { index in
Text("Width: (arrayOfRec[index].width), Height: (arrayOfRec[index].height)")
arrayOfRec[index].getView(color: .red)
}
}
}
}
Выше я создал пользовательский объект и сохраняю ширину и высоту, к которым можно обращаться по отдельности, а затем функцию, которая вернет представление, и вы можете передать любые необходимые модификаторы. Но в настоящее время я не думаю, что в SwiftUI можно получить размеры без geometry reader.