Кривая сигнала SwiftUIIOS

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

Сообщение Anonymous »


привет, я бы хотел добиться такого пользовательского интерфейса


Изображение


однако пока мне удается сделать это только так


Изображение


вот мой полный код, в котором я пытался этого добиться

struct Wave: Shape { вар animatableData: Double { получить {фазу} установить { self.phase = newValue } } Сила вар: Двойная Частота вар: Двойная переменная фаза: двойная переменная криваяAmount: Double путь функции (в прямоугольнике: CGRect) -> Путь { вар путь = Путь() пусть ширина = Double(rect.width) пусть высота = Double (rect.height) пусть MidWidth = ширина / 2 пусть MidHeight = высота / 2 пусть start = CGPoint (x: rect.minX, y: MidHeight) let end = CGPoint(x: rect.maxX, y: MidHeight) let control = CGPoint(x: MidWidth, y: rect.minY + Strength * CurveAmount) path.move(к: начало) для x в шаге (от: 0, через: ширина, на: 1) { пусть прогресс = x/ширина let parabolicY = QuadBezier(t: прогресс, начало: start.y, c: control.y, конец: end.y) пусть sineWave = sin(прогресс * частота * 2 * .pi + фаза) * (сила * 0,5) пусть y = параболическийY + синусоида path.addLine(to: CGPoint(x: x, y: y)) } Обратный путь } частная функция QuadBezier(t: Double, start: CGFloat, c: CGFloat, end: CGFloat) -> Double { пусть invT = 1 - t пусть b1 = 3*t*(инвТ*инвТ) пусть b2 = 3*(t*t)*invT пусть b3 = t*t*t let part1 = Double(start) * Double(invT * invT * invT) пусть часть2 = Double(c) * Double(b1 + b2) пусть часть3 = Double(конец) * Double(b3) вернуть часть1 + часть2 + часть3 } } struct ContentView: Просмотр { @State частная переменная фаза = 0,0

var body: some View { ZStack { ForEach(0..
Ответить

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

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

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

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

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