Все ответы публикуются на страницах кода; он не должен быть таким сложным.
// Create a new player for the sound; it doesn't matter which sound file this is
let soundPlayer = try AVAudioPlayer( contentsOf: url )
soundPlayer.numberOfLoops = 0
soundPlayer.volume = 1
soundPlayer.play()
soundPlayers.append( soundPlayer )
// In an timer based loop or other callback such as display link, prune out players that are done, thus deallocating them
checkSfx: for player in soundPlayers {
if player.isPlaying { continue } else {
if let index = soundPlayers.index(of: player) {
soundPlayers.remove(at: index)
break checkSfx
}
}
}
Смотрите на VB6 UserControls; я думаю, что они точно, в чем Вы нуждаетесь. Можно создать UserControl в рамках проекта, добавить средства управления и код к тому управлению, и затем вставить его на форму точно так же, как стандартные средства управления VB6. Я использовал UserControls для совместного использования разметок UI во многих случаях, и он работает отлично.