检查UITableViewCell在Swift中是否完全可见
我使用Parse来存储有视频的用户,然后在PFQueryTableViewController(我相信是UITableViewController的子类)中显示他们的视频。我只希望TableViewCell中的视频完全可见,可以自动播放,但我很难播放正确的视频。我寻找解决方案,但一切都在Objective-C中,我尝试在Swift中使用这些解决方案都没有成功。这是我的密码:检查UITableViewCell在Swift中是否完全可见,uitableview,swift,ios8,Uitableview,Swift,Ios8,我使用Parse来存储有视频的用户,然后在PFQueryTableViewController(我相信是UITableViewController的子类)中显示他们的视频。我只希望TableViewCell中的视频完全可见,可以自动播放,但我很难播放正确的视频。我寻找解决方案,但一切都在Objective-C中,我尝试在Swift中使用这些解决方案都没有成功。这是我的密码: override func scrollViewDidScroll(scrollView: UIScrollView) {
override func scrollViewDidScroll(scrollView: UIScrollView) {
var cells = self.tableView.visibleCells()
var indexPaths = self.tableView.indexPathsForVisibleRows()!
if (cells.count == 1) {
self.checkVisibilityOfCell(cells[0] as! UsersTableViewCell, forIndexPath: indexPaths[0] as! NSIndexPath)
} else if (cells.count == 2) {
self.checkVisibilityOfCell(cells[1] as! UsersTableViewCell, forIndexPath: indexPaths[1] as! NSIndexPath)
} else if (cells.count > 2) {
for i in 1...(cells.count - 1) {
(cells[i] as! UsersTableViewCell).completelyVisible = true
}
}
}
func checkVisibilityOfCell(cell : UsersTableViewCell, forIndexPath : NSIndexPath){
var cellRect : CGRect = self.tableView.rectForRowAtIndexPath(forIndexPath)
cellRect = self.tableView.superview!.convertRect(cellRect, fromView: self.tableView)
var completelyVisible : Bool = self.tableView.frame.contains(cellRect)
cell.completelyVisible = completelyVisible
}
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 {
let otherUser = pfObject as! PFUser
cell?.userDisplayed = otherUser
if (cell?.completelyVisible == true) {
// Video playing
println("\(cell?.userDisplayed!.username!) is completely visible")
var video1 = pfObject["video1"] as? PFFile
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()
} else {
println("\(cell?.userDisplayed!.username!) is not completely visible")
}
}
return cell
}
由于某些视频确实播放,我怀疑scrollViewDidScroll或checkVisibilityOfCell的一个或两个功能不正确。任何帮助都将不胜感激 在UITableView上使用indexPathsForVisibleCell方法。好的,这只是返回实际上不可见的单元格吗?我有几个单元格不在视图中,该方法将所有单元格返回为可见。