2016-05-04 71 views
0

我有一個UITableViewController具有類似標題的觀點:titleForHeaderInSection不動

https://github.com/andersonkxiass/UITableViewHeader

但我需要在我的表中的標題頭,在第一個位置是正確的,但是當我開始移動表標題保持不變

這是我的代碼:

class tableComent: UITableViewController { 

    var testComentName = [String]() 


    var headerView = UIView() 

    var viewHeight:CGFloat = 350 { 
     didSet { 
      moveHeader() 
     } 
    } 

    var scrollOffset:CGFloat = 0 { 
     didSet { 
      moveHeader() 
     } 
    } 

    private func loadNib() -> UIView { 
     let bundle = NSBundle(forClass: self.dynamicType) 
     return bundle.loadNibNamed("headerTable", owner: nil, options: nil)[0] as! UIView 
    } 

    func moveHeader() { 
     let viewHeight = (scrollOffset >= 0) ? self.viewHeight : self.viewHeight - scrollOffset 
     headerView.frame = CGRect(x: 0, y: -viewHeight, width: view.bounds.width, height: viewHeight) 
    } 

    var backView = UIView() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     headerView = loadNib() 

     backView.frame = CGRect(x: 0, y: 0 , width: view.bounds.width, height: view.bounds.height) 
     backView.backgroundColor = tableView.backgroundColor 

     view.addSubview(backView) 
     view.sendSubviewToBack(backView) 

     // Set the contentInset to make room for the image. 
     tableView.contentInset = UIEdgeInsets(top: viewHeight, left: 0, bottom: 0, right: 0) 

     // Add the imageView to the TableView and send it to the back. 
     view.addSubview(headerView) 
     view.sendSubviewToBack(headerView) 


     self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None 

     testComentName = ["Andres Gómez","Beatriz Gómez", "Francisco Manzo", "Rodolfo Martínez","Enrique Vega","Ana Lemus"] 
     loadTable() 

    } 

    override func viewWillAppear(animated: Bool) { 
     loadTable() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    override func viewDidLayoutSubviews() { 
     // Update the image position after layout changes. 
     moveHeader() 
    } 

    // Update scrollOffset on tableview scroll 
    override func scrollViewDidScroll(scrollView: UIScrollView) { 
     scrollOffset = tableView.contentOffset.y + viewHeight 
    } 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return testComentName.count 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
      let cell = tableView.dequeueReusableCellWithIdentifier("CellComentYo", forIndexPath: indexPath) as! celdaComentYo 
      cell.selectionStyle = .None 
      cell.nomLabel.text = testComentName[indexPath.row] 
      return cell 
    } 

    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     return UITableViewAutomaticDimension 
    } 

    override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     return UITableViewAutomaticDimension 
    } 

    override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 

     return "My Title:" 
    } 

    func loadTable() { 
     self.tableView.reloadData() 
    } 

} 

我想這個問題是在scrollViewDidScroll,但我不知道浩w啓用滾動標題。

謝謝!

回答

0

我一直在做這樣說:

  1. 在控制器
  2. 的頂部添加ImageView的一個空的頭部添加的tableView(大小相同的圖像

    //ImageView 
        imageView.frame = CGRect(x: 0, y: 0, width: screenWidth, height: self.headerHeight) 
        imageView.image = UIImage(assetIdentifier: headerImageAsset) 
        imageView.contentMode = UIViewContentMode.ScaleAspectFill 
        imageView.clipsToBounds = true 
    
        //Create empty header for the table 
        let headerView = UIView(frame: CGRect(x: 0, y: 0, width: screenWidth, height: self.headerHeight)) 
        headerView.backgroundColor = UIColor.clearColor() 
        tableView.tableHeaderView = headerView 
    

而在滾動代表上:

func scrollViewDidScroll(scrollView: UIScrollView) { 
     let yScroll = scrollView.contentOffset.y 

     if yScroll < 0.0 { 
      imageView.frame = CGRectMake(yScroll, 0, screenWidth - (yScroll * 2), self.headerHeight - yScroll) 
     } else { 
      self.imageView.frame = CGRectMake(0, -yScroll/3, screenWidth, self.headerHeight) 
     } 
    } 
+0

它完美無缺!,謝謝! – Andres

相關問題