728x90
미친듯한 비다
취준생 장점 이럴 때 안나가도 됨
AutomaticDimenssion
과제 중에 버튼을 누를 때 마다 Label안에 있는 가려져 있는 텍스트가 보이는 Lable을 구현 해야했다
AutomaticDimenssion을 모른다면 구현을 하는데 상당히 난항을 겪게 된다
쉽게 말하면, 동적인 TableViewCell을 만드는 과정으로 컨텐츠의 양에 따라 Cell의 크기가 달라질 수 있게 한다
*AutomaticDimenssion의 조건
- Label의 NumberOfLines = 0
- tableView height는 AutomaticDimenssion
- Layout 조정 필수
var isExpanded = false //false 2줄, true 0으로
override func viewDidLoad() {
super.viewDidLoad()
tableView.rowHeight = UITableView.automaticDimension
}
//버튼을 눌렀을 때 확장
@IBAction func expandCell(_ sender: UIBarButtonItem) {
isExpanded = !isExpanded
tableView.reloadData()
}
//cellForRowAt에서 lable의 numberOfLines의 조건을 버튼이 누르지 않았을때는 2 눌렀을때는 0
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: kakaoCell.identifier) as? kakaoCell else { return UITableViewCell()}
cell.testLable.numberOfLines = isExpanded ? 0 : 2 // 0이 아니면 2줄 제한
return cell
}
//조건에 부합하게 height는 automatiocDimension 설정
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension // 특정 셀에 대해서만 설정 가능
}
전체 코드는 가져오지 않고 필요한 부분만 가져왔다
Bool 타입으로 확장이 됐을 때는 true (numberOfLines = 0) 아닐 때는 false로 설정 해준다
UITableView 셀의 height에 automaticDimension 설정 (heightForRowA에서도)
버튼을 눌렀을 때 확장을 해주고 데이터를 reload해준다
cellForRowAt에서 numberOfLines에 대한 조건을 설정해주어서 Lable의 컨텐츠를 전체를 보여주거나 일부만 보여준다
'Tech > iOS' 카테고리의 다른 글
[iOS]Day37 - TableView+CollectionView (0) | 2022.08.09 |
---|---|
[iOS]Day37 - IBInspectable/IBDesignable (0) | 2022.08.09 |
[iOS]Day 32 - Pagenation (0) | 2022.08.04 |
[iOS] Day 31 - Device Network Condition (0) | 2022.08.03 |
[iOS] Day 31 - Xcode에서 gitignore 생성하는 간단한 방법 (0) | 2022.08.03 |