์๋ ํ์ธ์~
์ค๋์ ์ฑํ UI๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์ ์ด๋ณด๋ ค๊ณ ํฉ๋๋ค : )
๋ช ๊ฐ์ ํฌ์คํ ์ด ๋ ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ผ๋จ ์์ํด ๋ณด๊ฒ ์ต๋๋ค.
์ฑํ ์์ |
---|
![]() |
์ ๊ฐ ๊ตฌํํ ์ฑํ UI๋ ์์ ๊ฐ์ต๋๋ค.
TableView์ TableViewCell
TableView
- ์ฑํ UI๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ค ๋ณด๋ฉด ๊ฐํน CollectionView๋ฅผ ์ด์ฉํ์ ๋ถ๋ค๋ ๊ณ์๋๋ฐ ์ ๋ TableView๋ฅผ ํ์ฉํ์ต๋๋ค.
TableVIewCell
- ๊ฐ์ Cell์ ์ด์ฉํด ๊ตฌํํ์ ๋ถ๋ค๋ ์์๋๋ฐ ์ ์ ๊ฒฝ์ฐ์๋ ์์ ์ด ๋ณด๋ด๋ ์ฑํ ๊ณผ ์๋๊ฐ ๋ณด๋ด๋ ์ฑํ ๋ ๊ฐ์ง์ TableViewCell์ ์ฌ์ฉํ์ต๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ TableViewCell์ ๋ง๋ค๊ณ TableView์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์ ์ด๋ณด๊ฒ ์ต๋๋ค.
1. TableViewCell์ ๋ง๋ค์
๊ณตํต์ฌํญ : ํ ์คํธ๋ฅผ ๋ณด๋ด๊ณ ๋ฐ์ ๋ ๋ณด์ฌ์ค ํ ์คํธ๋ทฐ๋ฅผ ๋ง๋ค์ด์ค์ผ ํฉ๋๋ค. ์์์์ ๋ณด์๋ฏ์ด ์๊ฐ์ ๋ํ๋ด๊ธฐ ์ํด UILable์ ์ถ๊ฐ์ ์ผ๋ก ๋ฃ์์ต๋๋ค.
(1) ๋ด๊ฐ ๋ณด๋ผ ๋ ์ฌ์ฉํ Cell
// ๋ด๊ฐ ๋ณด๋ผ ๋ ์ฌ์ฉํ Cell
class ChattingViewMyCell: UITableViewCell {
//identifier ๋ณ์ ๋ง๋ค์ด์ฃผ๊ธฐ!
static let identifier = "ChattingViewCell"
// ์ฑํ
๋ด์ฉ์ด ๋ค์ด๊ฐ ํ
์คํธ๋ทฐ๋ฅผ ๋ง๋ค์ด์ค์๋ค
let messageBox = UITextView().then {
$0.isScrollEnabled = false // ์คํฌ๋กค์ ํ์ํ์ง ์์ต๋๋ค.
$0.isEditable = false // ์์ ํ ์๋ ์๊ตฌ์!
$0.backgroundColor = R.color.brandWhitegreen()!
$0.textContainerInset = UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 5)
$0.layer.cornerRadius = 10
$0.font = .toBodyR14
// ํ
์คํธ ๊ธธ์ด์ ๋ง๊ฒ ์ฌ์ด์ฆ๋ฅผ ๋ง์ถฐ์ค๋๋ค
$0.sizeToFit()
}
let date = UILabel().then {
$0.numberOfLines = 0
$0.backgroundColor = .clear
$0.textColor = R.color.gray7()!
$0.font = .toBodyR12
}
}
์ด๋, trailingConstraint์ width๊ฐ์ ์ฃผ์๋ฉด ๋ฉ๋๋ค.
sizeToFit ๋ฉ์๋๋ก ์ธํด ๋์ด๋ ์์ฐ์ค๋ฝ๊ฒ ์ ํด์ง๋ ์ต์ 45 ์ด์์ผ๋ก ์ค์ ํ์ต๋๋ค.
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
// ์ ํ์ ์คํ์ผ์ ์์ด์ผ๊ฒ ์ฃ !
selectionStyle = .none
contentView.addSubview(messageBox)
contentView.addSubview(date)
messageBox.snp.makeConstraints { make in
// ๋ด๊ฐ ๋ณด๋ด๋ ์
์ ๊ฒฝ์ฐ ์ฐ์ธก์ ๋ถ์ด์์ด์ผํ๊ธฐ์ trailing๊ณผ width๊ฐ์ ์ฃผ๋ฉด๋ฉ๋๋ค.
make.trailing.equalToSuperview().inset(15)
make.top.bottom.equalToSuperview()
make.height.greaterThanOrEqualTo(45)
make.width.lessThanOrEqualTo(255)
make.centerY.equalToSuperview()
}
date.snp.makeConstraints { make in
make.trailing.equalTo(messageBox.snp.leading).offset(-5)
make.bottom.equalTo(messageBox.snp.bottom)
}
}
(2) ๋ฐ์ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ค ๋ ์ฌ์ฉํ Cell
์์ ์ฝ๋์์ผ๋ก๋ ๋์ผํฉ๋๋ค.
๋ค๋ง ๋ ์ด์์์ ๋ฐ๋๋ก ์กฐ์ ์ด ๋ผ์ผ ํฉ๋๋ค.
๊ธฐ์กด์ trailling์ leading์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋ฉ๋๋ค.
2. TableView์ ์ ์ฉํด ๋ณด์
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
// ๋ Cell์ ๋ชจ๋ ๋ฑ๋ก
tableView.register(ChattingViewMyCell.self, forCellReuseIdentifier: ChattingViewMyCell.identifier)
tableView.register(ChattingViewYourCell.self, forCellReuseIdentifier: ChattingViewYourCell.identifier)
tableView.rowHeight = UITableView.automaticDimension
}
์ด๋ ๊ฒ ํ๋ฉด ํ์ ๊ตฌํํ์ จ๋ TableView์ TableViewCell์ด ์ ์์ ์ผ๋ก ๋์ํ๊ฒ ๋ฉ๋๋ค.
๋ค๋ง
(1) ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋, ์์๋๋ก ํ ์ด๋ธ ๋ทฐ์ ์์ด๊ฒ ๋๋ฉด ๊ฐ์ฅ ์ต๊ทผ์ ๋ณด๋ธ ๊ฒ์ด ๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ๊ฐ๊ฒ ๋๊ณ
(2) ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋, ์๋์ผ๋ก ๋ง์ง๋ง์ ์ฒ๋ฆฌํ๋ ๋ฉ์์ง๋ฅผ ๋ณผ ์ ์๊ฒ ์คํฌ๋กค์ ์์น๋ฅผ ๋ณ๊ฒฝํด ์ค ํ์๊ฐ ์๊น๋๋ค.
์์ ๋ ๊ฐ์ง๋ ๋ค์ ํฌ์คํ ์์ ์งํํ๊ฒ ์ต๋๋ค.
๊ทธ๋ผ ์ด๋ง ๐๐ป๐๐ป๐๐ป
[ ๋ค์ ํฌ์คํ ]
[swift] ์ฑํ UI๋ฅผ ๋ง๋ค์ด๋ด ์๋ค!(2)
[swift] ์ฑํ UI๋ฅผ ๋ง๋ค์ด๋ด ์๋ค!(1) ์๋ ํ์ธ์ ~ ( ์ค๋ ์ด ์ธํธ๋ก๋ก ๋๋ฆผ์ ๋ฐ์๋ต๋๋ค... ) ์ค๋์ ์ฑํ UI๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์ ์ด๋ณด๋ ค๊ณ ํด์! ๋ช ๊ฐ์ ํฌ์คํ ์ด ๋ ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ผ๋จ
pooh-footprints.tistory.com
'iOS > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Swift ] ๊ณ ์ฐจํจ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณด๊ธฐ ( Map, Filter, Reduce ) (0) | 2022.06.22 |
---|---|
[swift] ์ฑํ UI ๊ตฌํํด๋ณด๊ธฐ(2) (0) | 2022.03.09 |
[swift] ๋ฒํผํด๋ฆญ ์ ๋๋กญ๋ค์ด๋๋ ๋ทฐ๋ฅผ ๋ง๋ค๊ธฐ (1) | 2022.03.02 |
[swift] UILabel intrinsicContentSize ํ์ฉ๋ฐฉ๋ฒ (0) | 2022.02.23 |
[swift] NavigationController์ setViewController ์ฌ์ฉ๋ฐฉ๋ฒ (0) | 2022.02.18 |