使用 Xcode 和 Swift 在 pageControler 中播放声音文件
Posted
技术标签:
【中文标题】使用 Xcode 和 Swift 在 pageControler 中播放声音文件【英文标题】:playing a sound file in a pageControler with Xcode and Swift 【发布时间】:2018-11-19 00:49:29 【问题描述】:我想在屏幕出现新页面时播放声音文件。
到目前为止,我这样做是为了让 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】:当所选页面更改时,我没有看到直接调用的方法。您可以在页面视图控制器的 setViewControllers(_:direction:animated:completion:)
方法中添加代码,以确定哪个页面处于活动状态并播放适当的声音。
如果您使用页面控件,您可能还可以继承 UIPageControl 并在 currentPage
属性上使用 didSet 来确定要播放的声音。
编辑:
只需添加一个新文件,使其成为 Cocoa touch 类,并使其成为UIPageControl
的子类。将其命名为CustomPageControl
。那么你的实现可以像这样简单:
导入 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 方法就会被调用。
【讨论】:
非常感谢!我会尝试,但我不知道如何继承 UIPageControl。你可能有一个对我有用的链接吗?非常感谢您的宝贵时间 不,我没有链接。我把这个想法从我的……帽子里拿出来了。是的,我的帽子。 @davidandersson 它刚刚尝试过并且有效。我将编辑我的答案。 @Ducan C:我试过了,但在控制台中我有那个而不是页码:2018-11-20 15:54:20.707685-0500 audioBook[72322:3225706] CreateMetadataFromXMPBufferInternal:566: Thew错误 #201(XML 解析失败) 我们没有在任何地方谈论过 XML。看起来您的代码中的其他地方有错误。以上是关于使用 Xcode 和 Swift 在 pageControler 中播放声音文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Interface Builder 和 Swift 在 xCode6 中正确创建故事板
在 Xcode 8 和 Swift 3 中将 UITextField 转换为 Integer 并使用它们进行计算
在 Xcode 6.3 (Swift) 中使用 Parse 和 Facebook 框架编译错误
swift 3 Xcode 8 中的 NSManagedObject 和 CoreData