2016-12-09 4 views
0

Ich habe eine TableView, die eine Spalte mit variabler Länge hat, da der Text manchmal lang sein könnte. Ich reparierte das Problem durch die empfohlenen Schritte zu tun, wie die Etikettenlinien auf 0 setzen und die Aufnahme dieser zwei Codezeilen in ViewLoadIOS Swift TableView Border Probleme beim Ausführen der automatisierten Dimension

TableSource.rowHeight = UITableViewAutomaticDimension 
    TableSource.estimatedRowHeight = 150.0 

, dass das Problem behoben, aber jetzt meine Grenze Farben sind aus dem Gleichgewicht geraten, weil das für Beispiel So sieht es jetzt aus [Bild unten], dass dieses Verhalten auftrat, als ich diese zwei neuen Zeilen oben hinzugefügt habe. Ich rate mal, dass die Zellen, da die Zellen automatisch skaliert werden, abhängig von den eingehenden Daten sind, dass die Ränder nicht automatisch skaliert werden und aus dem Gleichgewicht geraten. Gibt es Vorschläge, wie das zu beheben ist? Dies ist mein Code, um die Grenzen I unter 2 Bilder haben anzuzeigen zu vergleichen und

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



     let border = CALayer() 
     let width = CGFloat(7.0) 
     border.borderColor = UIColor(hexString: "#8C001A").cgColor 
     border.frame = CGRect(x: 0, y: cell.frame.size.height - width, width: cell.frame.size.width, height: cell.frame.size.height) 

     border.borderWidth = width 
     cell.layer.addSublayer(border) 
     cell.layer.masksToBounds = true 
     return cell 
} 

With Auto Resizing cells

, wenn ich den Auto-Größenänderung Code im Grunde jene zwei neue Linien dann der TableCells aussehen entfernen Dies. Wie Sie sehen können, funktionieren die Grenzen jetzt, aber wenn eine Nachricht zu lang ist, wird sie abgeschnitten.

enter image description here

Antwort

2

Sie benötigen Code setzen Sie Ihre benutzerdefinierte in Ihre individuelle Zelle layoutSubviews() Methode Unentschieden, weil es ist, wo die individuelle Zelle die richtige berechnete Breite und Höhe dieses ist mein Code

hier ein Bild davon, wie sieht

enter image description here

import UIKit 

class AutoResizedCellTableViewCell: UITableViewCell { 

    @IBOutlet weak var lblText: UILabel! 
    override func awakeFromNib() { 
     super.awakeFromNib() 
     // Initialization code 
    } 

    func setupWithText(text:String) 
    { 
     self.lblText.text = text 
    } 

    override func setSelected(_ selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 

     // Configure the view for the selected state 
    } 

    override func layoutSubviews() { 
     super.layoutSubviews() 

     let border = CALayer() 
     let width = CGFloat(7.0) 
     border.borderColor = UIColor.red.cgColor 
     border.frame = self.bounds 

     border.borderWidth = width 
     self.layer.addSublayer(border) 
     self.layer.masksToBounds = true 
    } 

} 

ein nd hier ist mein viewController's Code

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var tableView: UITableView! 
    let arrayOfText = ["asdasddasdadasd asdasd asd asdasdasdasdasdasdasdassdasdasdasdasdasdasdasdasdasdasdasdasd asdasdasdasdasdasdadasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdadsdasdasdasd asdasdasd asdasdasd asdasdadasd asdasdasdasdas dasdasdasd asdas dasdas dasdas dasda sdasd asdas dasdas v ad as v v v v asd as d as s asdasdasdasdada","asdasd","asdasddasdadasd asdasd asd asdasdasdasdasdasdasdassdasdasdasdasdasdasdasdasdasdasdasdasd asdasdasdasdasdasdadasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdadsdasdasdasd asdasdasd asdasdasd asdasdadasd asdasdasdasdas dasdasdasd asdas dasdas dasdas dasda sdasd asdas dasdas v ad as v v v v asd as d as s asdasdasdasdada asdasddasdadasd asdasd asd asdasdasdasdasdasdasdassdasdasdasdasdasdasdasdasdasdasdasdasd asdasdasdasdasdasdadasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdadsdasdasdasd asdasdasd asdasdasd asdasdadasd asdasdasdasdas dasdasdasd asdas dasdas dasdas dasda sdasd asdas dasdas v ad as v v v v asd as d as s asdasdasdasdada","asdasddasdadasd asdasd asd asdasdasdasdasdasdasdassdasdasdasdasdasdasdasdasdasdasdasdasd asdasdasdasdasdasdadasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdadsdasdasdasd asdasdasd asdasdasd asdasdadasd asdasdasdasdas dasdasdasd asdas dasdas dasdas dasda sdasd asdas dasdas v ad as v v v v asd as d as s asdasdasdasdada","asdasdasdasasdas asdasdasd","asdasddasdadasd asdasd asd asdasdasdasdasdasdasdassdasdasdasdasdasdasdasdasdasdasdasdasd asdasdasdasdasdasdadasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdadsdasdasdasd asdasdasd asdasdasd asdasdadasd asdasdasdasdas dasdasdasd asdas dasdas dasdas dasda sdasd asdas dasdas v ad as v v v v asd as d as s asdasdasdasdada","asdasdadas"] 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     self.tableView.rowHeight = UITableViewAutomaticDimension 
     self.tableView.estimatedRowHeight = 150.0 
    } 

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

} 

extension ViewController : UITableViewDelegate,UITableViewDataSource{ 

    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    { 
     return self.arrayOfText.count 
    } 


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

     cell.setupWithText(text: self.arrayOfText[indexPath.row]) 


     return cell 
    } 
} 

Ich hoffe, das hilft Ihnen,

+0

Perfekt vielen Dank, dass Code genau gearbeitet, wie ich brauchte. – user1591668

+0

Ihre Begrüßung, war ein Vergnügen –

Verwandte Themen