๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿงฏ Troubleshooting

[StudyWithMe] UITableView - Dynamic Row Height

 

  ๋ฌธ์ œ  

์ฑ„ํŒ…ํ™”๋ฉด ๊ตฌํ˜„ ์‹œ, ์œ ์ €๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊ธด ์ฑ„ํŒ…์„ ๋ณด๋‚ผ์ง€ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ๊ฐ ์ฑ—์˜ cell ๋†’์ด๊ฐ€ ํ…์ŠคํŠธ ์–‘์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋„๋ก ๊ตฌํ˜„ํ•ด์•ผ ํ–ˆ๋‹ค.

 

UITableView์˜ cell ๋†’์ด๋ฅผ cell ๋‚ด๋ถ€ ๋ทฐ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์œ ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š”, ํ•ด๋‹น UITableView์˜ rowHeight ํ”„๋กœํผํ‹ฐ๋ฅผ UITableView.automaticDimension์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

 

private func configureTableView() {
    // ์ƒ๋žต
    chatsView.tableView.rowHeight = UITableView.automaticDimension
    // ์ƒ๋žต
}

 

์ด๋ ‡๊ฒŒ UITableView.automaticDimension์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, cell ๋‚ด๋ถ€ ๋ทฐ๋“ค์˜ constraints๊ฐ€ ๋ชจ๋‘ ์ž˜ ์žกํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

 

๋†’์ด๋ฅผ dynamicํ•˜๊ฒŒ ์กฐ์ ˆํ•˜๊ธฐ ๋•Œ๋ฌธ์— y์ถ• ์œ„์น˜(์„ธ๋กœ ์œ„์น˜)๊ฐ€ ์ž˜ ์žกํ˜€ ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ, 
centerY๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ ˆ์ด์•„์›ƒ์„ ์žก์„ ๊ฒฝ์šฐ UITableView.automaticDimension์ด ์ ์šฉ๋˜์ง€ ์•Š์•˜๋‹ค.

 

 

 

 

 

  ํ•ด๊ฒฐ  

 

class ChatTableViewCell: BaseTableViewCell {
    // MARK: - Properties
    let chatView = UIView()
 
    // MARK: - Setting Methods
    override func setHierarchy() {
        contentView.addSubview(chatView)
    }
    
    override func setConstraints() {        
        chatView.snp.makeConstraints { make in
            make.width.lessThanOrEqualToSuperview().multipliedBy(0.7)

//            make.centerY.equalToSuperview()
//            ๐Ÿ‘†๐Ÿป UITableView.automaticDimension ๋™์ž‘ X!

            make.verticalEdges.equalToSuperview().inset(12)
//          ๐Ÿ‘†๐Ÿป UITableView.automaticDimension ๋™์ž‘ O!
        }
        
        timeLabel.snp.makeConstraints { make in
            make.bottom.equalTo(chatView)
        }
    }
}

 

 

top๊ณผ bottom, ์ฆ‰ SnapKit์„ ๊ธฐ์ค€์œผ๋กœ ํ–ˆ์„ ๋•Œ verticalEdges ๊ธฐ์ค€์œผ๋กœ ๋ ˆ์ด์•„์›ƒ์ด ์žกํ˜€ ์žˆ์–ด์•ผ๋งŒ
UITableView.automaticDimension์ด ์ ์šฉ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.