2016-05-04 13 views
0

を移動しないでくださいtitleForHeaderInSectionは、私はに似たヘッダビューでのUITableViewControllerを持って

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 
        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 
    
  3. として空のヘッダ(同じサイズでのtableViewの追加の上部にImageViewのを追加します。

スクロールするデリゲートの場合:

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

it完璧に動作します!、ありがとう! – Andres

関連する問題