読者です 読者をやめる 読者になる 読者になる

UITableViewのCellの高さを可変にするメモ_φ(・×・ )

Twitterのような、ツイート(文章)ごとに高さが変わるセルを作る。
UITableViewの使い方と高さを可変にする方法は下記の記事参照。

yuu.1000quu.com

www.swift-study.com

環境

Swift3
Xcode 8.3.1

コード

// ViewController.swift


import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    
    @IBOutlet weak var tableView: UITableView!
    
    var rows = [
        "責任者に問いただす必要がある。責任者はどこか。",
        "我々の大方の苦悩は、あり得べき別の人生を夢想することから始まる。自分の可能性という当てにならないものに望みを託すことが諸悪の根元だ。今ここにある君以外、ほかの何者にもなれない自分を認めなくてはいけない。",
        "「僕なりの愛ですわい」",
        "大きなカステラを一人で切り分けて食べるというのは孤独の極地ですからね、人恋しさをしみじみ味わってほしくて",
        "「だって寂しいんだもの。それに夕風が冷たいの」",
        "「我々は運命の黒い糸で結ばれているというわけです」",
        "慰めるわけじゃないけど、あなたはどんな道を選んでも僕に会っていたと思う。直感的に分かります。いずれにしても、僕は全力を尽くしてあなたを駄目にする。運命に抗ってもしょうがないですよ",
        "猫ラーメンは、猫から出汁を取っているという噂の屋台ラーメンであり、真偽はともかくとして、その味は無類である。",
        "不毛に過ぎた二年の遅れをがつがつとみっともなく取り返そうとしているような気分になってきた。そんないじましい己の姿は私の美学に反する。したがって私は潔く勉強をあきらめた。こういった潔さには自信がある。つまりは紳士だということだ。",
        "成就した恋ほど語るに値しないものはない。",
    ]
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //見積もり高さ
        tableView.estimatedRowHeight = 20
        
        //自動設定
        tableView.rowHeight = UITableViewAutomaticDimension
    }
    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    
    
    // セルの個数を指定するデリゲートメソッド(必須)
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return rows.count
    }
    
    
    // セルに値を設定するデータソースメソッド(必須)
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        // セルを取得する(セルをオブジェクト化)
        let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath as IndexPath)
        
        // セルに表示する値を設定する
        cell.textLabel!.text = rows[indexPath.row]
        
        // 0に設定
        cell.textLabel!.numberOfLines = 0
        
        // 折り返しアリに設定
        cell.textLabel!.lineBreakMode = NSLineBreakMode.byWordWrapping
        
        return cell
    }
    
    // セルが選択された時に呼ばれるデリゲートメソッド
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        print("セル番号:\(indexPath.row) セルの内容:\(rows[indexPath.row])")
    }
}

Storyboard

f:id:unecocc:20170424150852p:plain

結果

f:id:unecocc:20170424150723p:plain