2017-05-08 61 views
2

我正在努力使單元格之間的空間在UItableview我已經檢查谷歌所有帖子我發現是3歲以上,當我嘗試應用他們我得到這麼多的錯誤,是否有可能使單元格之間的空間UItableviewxcode 8 swift 3單元格之間的UItableView空間?

我的代碼:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "ImageCell") as! ImageCell 
    cell.model = self.modelAtIndexPath(indexPath) 

    let url = URL(string: cell.model.imageName) 
    cell.imgBack.kf.setImage(with: url) 

    return cell 
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    //send back playlist count 
    if (section == 0) { 
     return self.lists_arr.count 
    } 
    return 0 
} 

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    tableView.deselectRow(at: indexPath, animated:true) 
} 

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { 
    let imageCell = cell as! ImageCell 
    self.setCellImageOffset(imageCell, indexPath: indexPath) 
} 

//number of sections in table 
func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 


func modelAtIndexPath(_ indexPath: IndexPath) -> CellPlaylist { 
    return self.lists_arr[(indexPath as NSIndexPath).row % self.lists_arr.count] 
} 

func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    if (scrollView == self.tblMain) { 
     for indexPath in self.tblMain.indexPathsForVisibleRows! { 
      if let imgCel : ImageCell = self.tblMain.cellForRow(at: indexPath) as? ImageCell { 
      self.setCellImageOffset(imgCel, indexPath: indexPath) 
      } 
     } 
    } 
} 

func setCellImageOffset(_ cell: ImageCell, indexPath: IndexPath) { 
    let cellFrame = self.tblMain.rectForRow(at: indexPath) 
    let cellFrameInTable = self.tblMain.convert(cellFrame, to:self.tblMain.superview) 
    let cellOffset = cellFrameInTable.origin.y + cellFrameInTable.size.height 
    let tableHeight = self.tblMain.bounds.size.height + cellFrameInTable.size.height 
    let cellOffsetFactor = cellOffset/tableHeight 
    cell.setBackgroundOffset(cellOffsetFactor) 

} 

類的TableCell的:

class ImageCell: UITableViewCell { 

    @IBOutlet weak var lblTitle: UILabel! 
    @IBOutlet weak var imgBack: UIImageView! 
    @IBOutlet weak var imgBackTopConstraint: NSLayoutConstraint! 
    @IBOutlet weak var imgBackBottomConstraint: NSLayoutConstraint! 

    let imageParallaxFactor: CGFloat = 70 

    var imgBackTopInitial: CGFloat! 
    var imgBackBottomInitial: CGFloat! 


    var model: CellPlaylist! { 
     didSet { 
      self.updateView() 
     } 
    } 

    override func awakeFromNib() { 
     self.clipsToBounds = true 
     self.imgBackBottomConstraint.constant -= 2 * imageParallaxFactor 
     self.imgBackTopInitial = self.imgBackTopConstraint.constant 
     self.imgBackBottomInitial = self.imgBackBottomConstraint.constant 
    } 

    func updateView() { 
     // self.imgBack.imageFromServerURL(urlString: self.model.imageName) 
     //self.getImage(url: self.model.imageName,imgView: self.imgBack) 
     //self.model.imageName 
     self.layer.cornerRadius = 10 
     self.layer.masksToBounds = true 
     self.layer.cornerRadius = 8 
     self.layer.shadowOffset = CGSize(width: 0, height: 3) 
     self.layer.shadowRadius = 3 
     self.layer.shadowOpacity = 0.3 
     self.layer.shadowPath = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: .allCorners, cornerRadii: CGSize(width: 8, height: 8)).cgPath 
     self.layer.shouldRasterize = true 
    self.layer.rasterizationScale = UIScreen.main.scale 

     self.contentView.layoutMargins.top = 20 

     self.lblTitle.text = self.model.title 
    } 

    func setBackgroundOffset(_ offset:CGFloat) { 
     let boundOffset = max(0, min(1, offset)) 
     let pixelOffset = (1-boundOffset)*2*imageParallaxFactor 
     self.imgBackTopConstraint.constant = self.imgBackTopInitial - pixelOffset 
     self.imgBackBottomConstraint.constant = self.imgBackBottomInitial + pixelOffset 
    } 



} 

,故事情節:

enter image description here

什麼我得到

enter image description here

我想要什麼:

enter image description here

+0

變化'view' UITableCell' – Dhiru

+0

的'了'contentView'內部框架有每一個細胞是屬於單獨部分的一部分。並給每個部分一個透明的footerView。或者在你的單元格內創建一個視圖,並讓單元格contentView透明。創建的視圖對具有所需間距的contentView有一個底部約束。因爲我正在下班,所以無法給出完全成熟的答案。如果你不能工作出來提及它,我會看到關於幫助你以後 – DatForis

+0

@Dhiru我這樣做仍然沒有間距 –

回答

5

讓Tablvi新的BG顏色白色和設置BG查看顏色的單元格,你想保持在圖像中看到我已經設置bgview BG顏色是淺灰色,使BGVIEW高度更小,然後單元格我的意思是如果你想設置空間10像素保持Bg高度小於電池10像素

這裏是我的手機 enter image description here ,這裏是出把

enter image description here

+0

這比添加部分更有意義... –

4

你可以讓每一個細胞都採取的tableView組一節,然後設置一節的頁腳。

試試我的代碼:

import UIKit 


class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

    @IBOutlet weak var tableView: UITableView! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     tableView.register(UINib.init(nibName: "VC1Cell", bundle: nil), forCellReuseIdentifier: "VC1Cell") 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    // MARK: -- tableview delegate 

    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 

     let view:UIView = UIView.init(frame: CGRect.init(x: 0, y: 0, width: self.view.bounds.size.width, height: 10)) 
     view.backgroundColor = .clear 

     return view 
    } 

    func numberOfSections(in tableView: UITableView) -> Int { 
     return 10 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 1 
    } 
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
     return 44 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     let cell:VC1Cell = tableView.dequeueReusableCell(withIdentifier: "VC1Cell") as! VC1Cell 
     return cell 
    } 

    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { 
     return 10.0 
    } 


} 

結果:

相關問題