12/08/2018, 15:56

Xây dựng ứng dụng với TableView tự co dãn chiều cao Cell theo nội dụng hiển thị

Download project đã đc dựng sẵn để bắt đầu tại đây Run project ta sẽ được kết quả như sau ta có thể thấy nội dung của app đã ko hiển thị đúng và thiếu rất nhiều dữ liệu quan trọng, rất xấu đúng không nào. Vậy nên bây giờ chúng ta cần hiển thị đúng và đủ nội dung của từng cell tạo 1 custom cell ...

Download project đã đc dựng sẵn để bắt đầu tại đây Run project ta sẽ được kết quả như sau ta có thể thấy nội dung của app đã ko hiển thị đúng và thiếu rất nhiều dữ liệu quan trọng, rất xấu đúng không nào. Vậy nên bây giờ chúng ta cần hiển thị đúng và đủ nội dung của từng cell tạo 1 custom cell chỉ chứa 1 label để hiển thị thông tin, add auto layout và để thuộc tính lines của label = 0 sau đó viết code để hiển thị dữ liệu theo cell ta vừa custom

func tableView(tableView: UITableView,
               cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  let cell = tableView.dequeueReusableCellWithIdentifier("Cell",
                                                         forIndexPath: indexPath) as! ArtistTableViewCell
  
  let artist = artists[indexPath.row]
  cell.bioLabel.text = artist.bio
  cell.bioLabel.textColor = UIColor(white: 114/255, alpha: 1)
  return cell
}

và quan trọng là đoạn code được viết trong hàm viewDidload()

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 140

ok, bây giờ hãy run app 1 lần nữa đã đẹp hơn nhiều rồi phải không nào

Thêm ảnh thì sao? set row height của cell là 140 và custom interface của cell đó như sau UIImageView và UILabel mới được add vào

@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var artistImageView: UIImageView!

mã code để hiển thị dữ liệu

cell.artistImageView.image = artist.image
cell.nameLabel.text = artist.name
cell.nameLabel.backgroundColor = UIColor(red: 1, green: 152 / 255, blue: 0, alpha: 1)
cell.nameLabel.textColor = UIColor.white
cell.nameLabel.textAlignment = .center
cell.selectionStyle = .none

Run app và đây sẽ là kết quả đã rất tốt rồi đúng không nào

0