Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当视频滚动到视图中时自动播放MPMoviePlayerController_Ios_Swift_Video_Mpmovieplayercontroller - Fatal编程技术网

Ios 当视频滚动到视图中时自动播放MPMoviePlayerController

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

我正在制作一个ios应用程序,用户可以在其中发布视频,视频将显示在类似instagrams的提要上。我想让当前看到的视频立即开始自动播放,一次只播放一个视频。我目前在ios模拟器中遇到问题,一次播放多个视频,有些视频甚至在屏幕上看不到

这是我的密码:

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)


    }
}

谢谢你的帮助

可能更好的方法是

  • 滚动停止前不要播放
  • 验证单元格是否可见(至少四分之三的高度在可见区域内)
  • 即使您想在快速滚动的同时播放,您也可以在默认情况下将音频设置为静音。在视频顶部提供一些可点击图标,以启用/禁用音频
这些仅仅是对instagram的观察结果