Создание равномерно распределенного пунктирного контура для пользовательского элемента списка в SwiftUIIOS

Программируем под IOS
Ответить
Anonymous
 Создание равномерно распределенного пунктирного контура для пользовательского элемента списка в SwiftUI

Сообщение Anonymous »


Предположим, в SwiftUI вы хотите иметь собственный элемент списка с пунктирным контуром, который будет служить «подсказкой для добавления элемента».

Итак, вы используете StrokeBorder следующим образом:

struct ContentView: Просмотр { let items:[String] = ["a","b","c"] @State var itemsEmpty = false var body: some View { Text("переключатель").onTapGesture { itemsEmpty.toggle() } ВСтек { Разделитель() если !itemsEmpty { Список{ ForEach(items, id: \.self) {элемент в Текст(пункт) } } } еще { // Представление "Подсказка по элементу списка" Список{ Текст("ДОБАВИТЬ") .listRowBackground( RoundedRectangle(cornerSize: CGSize(ширина: 15, высота: 15)) .strokeBorder(стиль: StrokeStyle(lineWidth: 4, тире: [10])) ) } } Разделитель() } .padding() } } Что приводит к следующему:


Изображение


Тот же метод используется в этом примере Apple, но он меня не устраивает, поскольку строки (по понятным причинам) распределены неравномерно, и мы получаем неприятное усечение в точке переноса.

Единственные (также неудовлетворительные) способы решения этой проблемы:

A) Чтобы создать вид, используя вместо этого две зеркально отраженные фигуры... (но это все равно приведет к усечению... только на этот раз это будет симметричное усечение).

Б) Сделайте что-то вроде радиального градиента «солнечных лучей» и сложите два скругленных прямоугольника таким образом, чтобы создать иллюзию, что у нас есть пунктирный контур... (но «орел и решка» этих линий не будут перпендикулярно траектории контура, поскольку все «солнечные лучи» исходят из одной точки)

Как это можно сделать??
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»