Совершенно новое для 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))
. Но это кажется немного неаккуратным. И в этом случае я получаю половину слайдера!