«Статический метод ‘buildBlock’ требует, чтобы ‘CGRect’ соответствовал ‘View'»

#swift #swiftui #cgrect

#swift #swiftui #cgrect

Вопрос:

Мой код выглядит примерно так:

 import SwiftUI

struct MainView: View {
    var body: some View {
        CGRect(x: 20, y: 20, width: 100, height: 100)
    }
}
  

Однако я получаю сообщение об ошибке:

 Static method 'buildBlock' requires that 'CGRect' conform to 'View'
  

Как я могу использовать CGRect с SwiftUI?

Комментарии:

1. Какова ваша цель? Ваш код не имеет смысла; вас запрашивают представление, и вы отвечаете измерением. Что вы пытаетесь сказать этим странным ответом?

2. Я бы поработал с [учебным пособием Apple по SwiftUI] ( developer.apple.com/tutorials/swiftui ). Вы вступаете в совершенно новую парадигму от UIKit.

3. @matt Я пытался нарисовать прямоугольник, я не понимал этого задолго до того, как CGRect — это всего лишь некоторые измерения.

Ответ №1:

Вероятно, вы хотели этого

 struct MainView: View {
    var body: some View {
        Rectangle()
          .frame(width: 100, height: 100)
    }
}
  

в SwiftUI мы должны просто размещать представления body вместо того, чтобы что-то рисовать.

Примечание: существуют разные варианты расположения вида на экране, в зависимости от потребностей, но я бы рекомендовал избегать жесткого кодирования позиции (например, x: 20, y: 20), потому что это даст разный результат на разных устройствах.