#ios #swiftui #protocol-oriented
#iOS #swiftui #ориентированный на протокол
Вопрос:
Новичок в SwiftUI, я увидел, что все компоненты пользовательского интерфейса теперь являются протоколами или структурами.
Что мне нравится в протоколах, так это то, что я могу комбинировать их без необходимости наследования, в отличие от объектно-ориентированного программирования.
Но тогда мне было интересно, как я могу объединить несколько видов представления, скажем, у меня был бы BlueView
протокол, который определял бы вид с синим фоном, и RoundedCorner
протокол, определяющий вид с закругленными углами.
Как я могу сделать что-то подобное:
MyView: View, BlueView, RoundedCorner { ...
Чтобы не устанавливать эти строки кода в каждом представлении моего приложения?
Color.blue
.cornerRadius(8)
...
Спасибо за вашу помощь
Комментарии:
1. Не уверен, что я понял, что вы пытаетесь сделать с этими протоколами? Не могли бы вы показать больше кода или подготовить минимальный воспроизводимый пример?
2. Я думаю, что это то, что вы ищете. Вы не можете сделать это с помощью композиции, поскольку добавление протокола описывает только поведение. Он не реализует поведение.
3. Кроме того, использование композиции не означает, что вы не используете объектно-ориентированное программирование. Объекты и структуры в Swift могут соответствовать протоколам, и взаимозаменяемость является ключевым результатом использования протоколов
4. Спасибо за ваши комментарии и помощь. Теперь мне это более понятно.