Воспроизведение звукового файла на странице Controller с Xcode и Swift - PullRequest
0 голосов
/ 19 ноября 2018

Я хотел бы воспроизвести звуковой файл, когда на экране появляется новая страница.

Пока я делал это, чтобы pageControler работал с массивом изображений.

Может кто-нибудь сказать мне, где я должен поместить свой код для воспроизведения массива звука? Так что sound1 будет воспроизведено, когда на экране появится image1.

import UIKit

class ViewController: UIViewController, UIScrollViewDelegate {

   @IBOutlet weak var pageControl: UIPageControl!
   @IBOutlet weak var scrollView: UIScrollView!

   var images: [String] = ["1", "2", "3", "4", "5"]
   var frame = CGRect(x:0,y:0, width:0, height:0)

   override func viewDidLoad() {
      super.viewDidLoad()
      // Do any additional setup after loading the view, typically from a nib.

      pageControl.numberOfPages = images.count
      for index in 0..<images.count {
         frame.origin.x = scrollView.frame.size.width * CGFloat(index)
         frame.size = scrollView.frame.size

         let imgView = UIImageView(frame: frame)
         imgView.image = UIImage(named: images[index])
         self.scrollView.addSubview(imgView)

      }

      scrollView.contentSize = CGSize(width:(scrollView.frame.size.width * CGFloat(images.count)), height: scrollView.frame.size.height)
      scrollView.delegate = self
   }

   override func didReceiveMemoryWarning() {
      super.didReceiveMemoryWarning()
      // Dispose of any resources that can be recreated.
   }

   func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
      var pageNumber = scrollView.contentOffset.x / scrollView.frame.size.width
      pageControl.currentPage = Int(pageNumber)
   }
}

1 Ответ

0 голосов
/ 19 ноября 2018

Я не вижу прямого способа вызова при изменении выбранной страницы.Вы можете добавить код в методе setViewControllers(_:direction:animated:completion:) контроллера представления страницы, который определяет, какая страница активна и воспроизводит соответствующий звук.

Если вы используете элемент управления страницей, вы, вероятно, также можете создать подкласс UIPageControl и использовать didSet наcurrentPage свойство, чтобы определить, какой звук воспроизводить.

Редактировать:

Просто добавьте новый файл, сделайте его классом касания Cocoa и сделайте его подклассом UIPageControl.Назовите это CustomPageControl.Тогда ваша реализация может быть такой простой:

import UIKit

class CustomPageControl: UIPageControl {

    override var currentPage: Int {
        didSet {
            //Your code to play sounds based on selected index could go 
            //here, or broadcast a notification that your view controller 
            //would listen for
            print("New page index = \(currentPage)")
        }
    }
}

Затем просто выберите элемент управления страницей в вашем UIPageViewController, выберите «Identity Inspector» и измените классуправление страницей в ваш пользовательский класс CustomPageControl.После того, как вы это сделаете, при каждом изменении индекса страницы будет вызываться метод didSet, описанный выше.

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