SwiftUI: определение внешнего вида представления с помощью протоколов

#ios #swiftui #protocol-oriented

#iOS #swiftui #ориентированный на протокол

Вопрос:

Новичок в SwiftUI, я увидел, что все компоненты пользовательского интерфейса теперь являются протоколами или структурами.

Что мне нравится в протоколах, так это то, что я могу комбинировать их без необходимости наследования, в отличие от объектно-ориентированного программирования.

Но тогда мне было интересно, как я могу объединить несколько видов представления, скажем, у меня был бы BlueView протокол, который определял бы вид с синим фоном, и RoundedCorner протокол, определяющий вид с закругленными углами.

Как я могу сделать что-то подобное:

MyView: View, BlueView, RoundedCorner { ...

Чтобы не устанавливать эти строки кода в каждом представлении моего приложения?

 Color.blue
.cornerRadius(8)
...
  

Спасибо за вашу помощь

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

1. Не уверен, что я понял, что вы пытаетесь сделать с этими протоколами? Не могли бы вы показать больше кода или подготовить минимальный воспроизводимый пример?

2. Я думаю, что это то, что вы ищете. Вы не можете сделать это с помощью композиции, поскольку добавление протокола описывает только поведение. Он не реализует поведение.

3. Кроме того, использование композиции не означает, что вы не используете объектно-ориентированное программирование. Объекты и структуры в Swift могут соответствовать протоколам, и взаимозаменяемость является ключевым результатом использования протоколов

4. Спасибо за ваши комментарии и помощь. Теперь мне это более понятно.