Ios 当视频滚动到视图中时自动播放MPMoviePlayerController
我正在制作一个ios应用程序,用户可以在其中发布视频,视频将显示在类似instagrams的提要上。我想让当前看到的视频立即开始自动播放,一次只播放一个视频。我目前在ios模拟器中遇到问题,一次播放多个视频,有些视频甚至在屏幕上看不到 这是我的密码:Ios 当视频滚动到视图中时自动播放MPMoviePlayerController,ios,swift,video,mpmovieplayercontroller,Ios,Swift,Video,Mpmovieplayercontroller,我正在制作一个ios应用程序,用户可以在其中发布视频,视频将显示在类似instagrams的提要上。我想让当前看到的视频立即开始自动播放,一次只播放一个视频。我目前在ios模拟器中遇到问题,一次播放多个视频,有些视频甚至在屏幕上看不到 这是我的密码: import UIKit import Parse import ParseUI import MediaPlayer import MobileCoreServices class UsersTableViewController: PFQue
import UIKit
import Parse
import ParseUI
import MediaPlayer
import MobileCoreServices
class UsersTableViewController: PFQueryTableViewController {
let cellIdentifier:String = "UserCell"
var objMoviePlayerController: MPMoviePlayerController = MPMoviePlayerController()
override func viewDidLoad() {
super.viewDidLoad()
self.pullToRefreshEnabled = true
self.paginationEnabled = false
self.objectsPerPage = 25
self.tableView.rowHeight = 422
self.tableView.allowsSelection = false
let font = UIFont(name: "Apple SD Gothic Neo", size: 24.0) ?? UIFont.systemFontOfSize(24)
var nav = self.navigationController?.navigationBar
nav?.barStyle = UIBarStyle.Default
nav?.barTintColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
nav?.titleTextAttributes = [NSFontAttributeName : font, NSForegroundColorAttributeName : UIColor(red: 1.0, green: (203.0/255.0), blue: (38.0/255.0), alpha: 1.0)]
}
override func viewWillAppear(animated: Bool) {
self.navigationItem.hidesBackButton = true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func queryForTable() -> PFQuery {
var query : PFQuery = PFUser.query()!
var currentUser = PFUser.currentUser()!
let currentUserGender : String = currentUser["gender"] as! String
let acceptableGenderPrefs = ["Both", currentUserGender]
let currentUserGenderPref : String = currentUser["genderPref"] as! String
query.whereKey("username", notEqualTo: currentUser.username!)
query.whereKey("genderPref", containedIn: acceptableGenderPrefs)
if (currentUserGenderPref != "Both") {
query.whereKey("gender", equalTo: currentUserGenderPref)
}
return query
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {
var cell : UsersTableViewCell? = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as? UsersTableViewCell
if(cell == nil) {
cell = UsersTableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: cellIdentifier)
}
if let pfObject = object {
cell?.userNameLabel?.text = pfObject["username"] as? String
var profilePic = pfObject["profilePicture"] as? PFFile
var video1 = pfObject["video1"] as? PFFile
profilePic?.getDataInBackgroundWithBlock({
(result, error) in
if (result != nil) {
cell?.userProfilePicture?.image = UIImage(data: result!)
}
})
let video1URL = NSURL(string: (video1?.url)!)
objMoviePlayerController = MPMoviePlayerController(contentURL: video1URL)
objMoviePlayerController.movieSourceType = MPMovieSourceType.Unknown
objMoviePlayerController.view.frame = (cell?.userVideo1.bounds)!
objMoviePlayerController.scalingMode = MPMovieScalingMode.AspectFit
objMoviePlayerController.controlStyle = MPMovieControlStyle.None
objMoviePlayerController.repeatMode = MPMovieRepeatMode.One
objMoviePlayerController.shouldAutoplay = true
cell?.userVideo1.addSubview(objMoviePlayerController.view)
objMoviePlayerController.prepareToPlay()
objMoviePlayerController.play()
}
return cell
}
// Mark: Actions
@IBAction func signOutAction(sender: AnyObject) {
PFUser.logOut()
self.navigationController?.popToRootViewControllerAnimated(false)
}
}
谢谢你的帮助 可能更好的方法是
- 滚动停止前不要播放
- 验证单元格是否可见(至少四分之三的高度在可见区域内)
- 即使您想在快速滚动的同时播放,您也可以在默认情况下将音频设置为静音。在视频顶部提供一些可点击图标,以启用/禁用音频