AudioKitUI и форматирование - PullRequest
       7

AudioKitUI и форматирование

2 голосов
/ 19 января 2020

Совершенно новое для Swift, а программная организация кнопок и ползунков пользовательского интерфейса - это наименее увлекательное занятие, которое у меня было до сих пор! Я использую 2 экземпляра AKSlider здесь и хотел бы сделать ползунок Y вертикальным. Я уверен, что это должно быть достаточно просто.

Также, если кто-то знает хороший учебник по раскладке элементов управления пользовательского интерфейса (ползунки, кнопки, метки и т. Д. c), высоко ценится программно.

Здесь мой код:

fileprivate lazy var stack: UIStackView = {
 let sliderOne = AKSlider(property: "Y VELOCITY",
                                   value: yVelocityBallArray[ballBloqDoubleTapped],
                                       range: 0 ... 100,

                                       taper: 4,
                                       format: "%1f Hz"
                      ) { sliderValue in
                          yVelocityBallArray[ballBloqDoubleTapped] = sliderValue

                       ballBloqArray[ballBloqDoubleTapped].physicsBody?.velocity = CGVector(dx:  0, dy: (yVelocityBallArray[ballBloqDoubleTapped] * 10))
                      }
    sliderOne.draw(CGRect(width: 60, height: 20))

    let sliderTwo = AKSlider(property: "X VELOCITY",
                                         value: xVelocityBallArray[ballBloqDoubleTapped],
                                             range: 0 ... 100,

                                             taper: 4,
                                             format: "%0.3f Hz"
                            ) { sliderValue in
                                xVelocityBallArray[ballBloqDoubleTapped] = sliderValue

                             ballBloqArray[ballBloqDoubleTapped].physicsBody?.velocity = CGVector(dx:  (xVelocityBallArray[ballBloqDoubleTapped] * 10), dy: 0)
                            }
    sliderTwo.draw(CGRect(width: 60, height: 20))

    let hStackNoteButtons = UIStackView(arrangedSubviews: [sliderOne])
           hStackNoteButtons.translatesAutoresizingMaskIntoConstraints = false
           hStackNoteButtons.axis = .horizontal

    let stack = UIStackView(arrangedSubviews: [sliderOne, sliderTwo, ballIDLabel, MIDIChannelSlider]
    )
    stack.translatesAutoresizingMaskIntoConstraints = false
    stack.axis = .vertical
    stack.distribution = .fillEqually

    return stack
}()

Стек добавлен в представление контейнера в другом месте, которое является частью представления «Всплывающее окно», созданного мной в игре Spritekit.

РЕДАКТИРОВАТЬ: Мне удалось это сделать с помощью. transform. Использование CGAffineTransform(rotationAngle: CGFloat(-Double.pi / 2)). Но это кажется немного неаккуратным. И в этом случае я получаю половину слайдера!

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