Как закруглить концы произвольной формы в SwiftUI?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как закруглить концы произвольной формы в SwiftUI?

Сообщение Anonymous »

Я хочу, чтобы у следующей фигуры были закругленные концы.

Код: Выделить всё

struct Wave: Shape {
var strength: Double
var frequency: Double
var phase: Double
var animatableData: AnimatablePair {
get { AnimatablePair(phase, strength) }
set {
self.phase = newValue.first
self.strength = newValue.second
}
}

func path(in rect: CGRect) -> Path {
var path = Path()

let width = Double(rect.width)
let height = Double(rect.height)
let midHeight = height / 2
let wavelength = width / frequency
let strokeWidth = 5.0
let circleRadius = strokeWidth / 2

let firstX = 0.0
let firstRelativeX = firstX / wavelength
let firstSine = sin(firstRelativeX + phase)
let firstY = strength * firstSine + midHeight

// Left-end circle
path.addEllipse(in: CGRect(
x: firstX - circleRadius,
y: firstY - circleRadius,
width: circleRadius * 2,
height: circleRadius * 2
))

path.move(to: CGPoint(x: firstX, y: firstY))

for x in stride(from: 0.0, through: width, by: 1) {
let relativeX = x / wavelength
let sine = sin(relativeX + phase)
let y = strength * sine + midHeight
path.addLine(to: CGPoint(x: x, y: y))
}

let lastX = width
let lastRelativeX = lastX / wavelength
let lastSine = sin(lastRelativeX + phase)
let lastY = strength * lastSine + midHeight

// Right-end circle
path.addEllipse(in: CGRect(
x: lastX - circleRadius,
y: lastY - circleRadius,
width: circleRadius * 2,
height: circleRadius * 2
))

return path
}
}
Я пытался добиться этого, отображая круги на концах, но мне не удалось сопоставить размер кругов с шириной линии фигуры при обводке. Например, если я нарисую фигуру следующим образом:

Код: Выделить всё

Wave(strength: 50.0, frequency: 30, phase: 0)
.stroke(Color.white, lineWidth: 5.0)
Круги кажутся больше, чем обводка волны.
Я также пробовал использовать StrokeStyle, но это не дало эффекта.

Код: Выделить всё

Wave(strength: 50.0, frequency: 30, phase: 0)
.stroke(Color.white, style: StrokeStyle(lineWidth: 5.0, lineCap: .round))
Как этого добиться?

Подробнее здесь: https://stackoverflow.com/questions/791 ... in-swiftui
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как закруглить концы произвольной формы в SwiftUI?
    Anonymous » » в форуме IOS
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Установить положение DOV на дальние концы
    Anonymous » » в форуме Html
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Установить положение DOV на дальние концы
    Anonymous » » в форуме CSS
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Показать себя в окне произвольной формы
    Гость » » в форуме Android
    0 Ответы
    70 Просмотры
    Последнее сообщение Гость
  • Как добавить поддержку оконного режима [или небольшого оконного режима, окна произвольной формы, плавающего окна и т. д.
    Гость » » в форуме JAVA
    0 Ответы
    114 Просмотры
    Последнее сообщение Гость

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