SwiftUI Stroke Цвет и ширина? - PullRequest
       81

SwiftUI Stroke Цвет и ширина?

1 голос
/ 30 марта 2020

Я слежу за яблоками " Создание и объединение видов " Учебное пособие по SwiftUI и раздел 4 Шаг 5 Меня просят добавить Серый штрих, который я могу сделать, но не показывает цвет или не дает мне ширина линии.

            .clipShape(Circle())
            .overlay(
                Circle().stroke(StrokeStyle)) 

Я что-то не так делаю или это какая-то ошибка?

Как показывает пример Apple;

           .clipShape(Circle())
           .overlay(
               Circle().stroke(Color.gray, lineWidth: 4))

Я могу напечатать в, но не понимаю, почему он не вытягивает цвет из инспектора. Я даже могу изменить цвет с серого на белый, но, опять же, я не вижу этого в коде

Также возможно добавить / установить lineWidth из инспектора? Следующий шаг с добавлением тени имел смысл, но этот шаг действительно поставил меня в тупик.

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Если вы имеете в виду цветные литералы, то они имеют тип UIColor, поэтому вы должны явно обернуть их в конструкторе Color, как показано ниже

demo

0 голосов
/ 30 марта 2020

Функция stroke(...) в Circle() перегружена несколько раз.

Перегрузка функций или перегрузка методов - это возможность создавать несколько функций с одинаковыми именами в разных реализациях.

О перегрузке функций можно прочитать здесь: Функция перегрузка

Вот документация четырех различных реализаций stroke(...)

штрих (стиль:)

ход ( lineWidth:)

ход (_: стиль:)

ход (_: lineWidth:)

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

Circle().stroke(Color.black, lineWidth: 1)  
Circle().stroke(style: StrokeStyle(lineWidth: 1, lineCap: .butt, lineJoin: .bevel, miterLimit: 1, dash: [CGFloat](), dashPhase: 1))

Обе эти реализации делают одно и то же, но используют разные реализации функции хода (...).

...