[ ์ฒซ ๋ฒ์งธ ํฌ์คํ ์ฐธ๊ณ โฌ ]
์ด์ ํฌ์คํ ์์๋ ์ ์ ๋ฑ๋กํ๊ณ ํ์ธ๋ง ํ ์ ์๊ฒ ์ ์ฉํด ๋ดค๋ค๋ฉด ์ด๋ฒ ํฌ์คํ ์์๋
(1) ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋, ๊ฐ์ฅ ์ต๊ทผ ์ฃผ๊ณ ๋ฐ์ ๊ฒ์ด ํ๋จ์ ์ฌ ์ ์๊ฒ ์ ์ฉํ๋ ๋ฐฉ๋ฒ
(2) ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋, ์๋์ผ๋ก ๋ง์ง๋ง์ ์ฃผ๊ณ ๋ฐ์ ๋ฉ์์ง๋ฅผ ๋ณผ ์ ์๊ฒ ์คํฌ๋กค์ ์์น๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ
์์ ๋๊ฐ์ง๋ฅผ ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค.
์ ํ ๊ฐ๋ฐ์ ๋ฌธ์๋ฅผ ๋จผ์ ์ดํด๋ด ์๋ค.
ํด๋น ๋ฉ์๋ ์ค๋ช ์ ๋ณด๋ฉด Index Path๋ฅผ ํตํด ์๋ณํ ํ์ด
ํ๋ฉด์ ํน์ ์์น์ ์์ ๋๊น์ง ์คํฌ๋กคํ๋ค๊ณ ๋์์์ต๋๋ค.
๊ฐ๋จํ๊ฒ ์ค๋ช ํด๋ณด๋ฉด
- IndexPath : ํ๊ณผ ์น์ ์ ๋๊ฒจ์ค์ ์๋ ์ธ๋ฑ์ค ๊ฒฝ๋ก์ ๋๋ค.
- ScrollPosition : ์คํฌ๋กค์ด ๋๋ ๋ ํ ์ด๋ธ์ ์๋ ์์น๋ฅผ ์๋ณํ๋ ๋งค๊ฐ๋ณ์๋ก top, middle, bottom 3๊ฐ์ง๊ฐ ์์ต๋๋ค.
- Animated : ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ฅผ ์ ์ฉํ๊ธฐ ์ํ Bool ํ์ ๋งค๊ฐ๋ณ์ ์ ๋๋ค.
์ด ๋ฉ์๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ ์ํฉ์ ์ ์ฉํ๋ฉด ๋ฉ๋๋ค.
1. ๋ฉ์์ง๋ฅผ ๋ณด๋ผ๋
2. ๋ฉ์ธ์ง๋ฅผ ์์ ํ ๋
๋ฉ์ธ์ง๋ฅผ ์์ ํ๋ ๊ฒ์ ์์๋ก ์์ฑํด๋ณด๊ฒ ์ต๋๋ค.
// ์์ผํต์ ์ ์ด์ฉํด ์์ ํ ๋ฉ์ธ์ง๊ฐ ์๋ค๋ฉด ํ
์ด๋ธ๋ทฐ์ ์ถ๊ฐํ๊ณ ์คํฌ๋กค
@objc func getMessage(push: NSNotification) {
'''
์๋ต
'''
self.viewModel.chatList.append(chatting)
self.tableView.reloadData()
self.tableView.scrollToRow(at: IndexPath(row: self.viewModel.chatList.count - 1, section: 0), at: .bottom, animated: false)
}
์ด๋ ๊ฒ ์์ฑํ๊ฒ ๋๋ฉด
๋ฉ์ธ์ง๋ฅผ ์์ ํ์์ ๋
IndexPath๊ฐ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ค์ด์จ ์ฑํ ์ด๋ฏ๋ก
bottom ์ต์ ์ผ๋ก ์ธํด ํด๋น ์ธ๋ฑ์ค์ ํ๋จ์ผ๋ก ์ด๋ํ ์ ์๊ฒ ๋ฉ๋๋ค.
์นด์นด์คํก ๊ฐ์ ๊ฒฝ์ฐ์ ๋ฉ์์ง๊ฐ ์ค๋๋ผ๋
๋ฐ๋ก ๋ง์ง๋ง ์ฑํ ๋ด์ญ์ผ๋ก ๋ด๋ ค๊ฐ์ง ์๋๋ฐ
๋ง์ง๋ง ์ฑํ ๋ด์ญ์ด ํ์ฌ Visibleํ๋ค๋ฉด ๋ด๋ ค์ฃผ๊ณ
์๋๋ผ๋ฉด ์ค๋ฅธ์ชฝ ํ๋จ์ ๊ฐ์ฅ ๋ฐ์ ์ ๋ก ์ด๋์์ผ์ฃผ๋ ๋ฒํผ์ ์ฃผ๋๊ฒ ์๋๊ฐ ์๊ฐ์ด ๋๋ค์.
๋์ค์ ๊ตฌํํ๊ฒ ๋๋ฉด ํฌ์คํ ํด๋ด์ผ๊ฒ ์ต๋๋ค.
์ค๋์ ์ฌ๊ธฐ๊น์ง ์ ๋ฆฌํ๊ฒ ์ต๋๋ค.
๊ทธ๋ผ ์ด๋ง ๐๐ป ๐๐ป ๐๐ป
'iOS > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Swift ] ์ ๊ท์์ ์ฌ์ฉํด๋ณด์ ( UITextField, UITextView ) (0) | 2022.06.27 |
---|---|
[ Swift ] ๊ณ ์ฐจํจ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณด๊ธฐ ( Map, Filter, Reduce ) (0) | 2022.06.22 |
[swift] ์ฑํ UI ๊ตฌํํด๋ณด๊ธฐ(1) (0) | 2022.03.03 |
[swift] ๋ฒํผํด๋ฆญ ์ ๋๋กญ๋ค์ด๋๋ ๋ทฐ๋ฅผ ๋ง๋ค๊ธฐ (1) | 2022.03.02 |
[swift] UILabel intrinsicContentSize ํ์ฉ๋ฐฉ๋ฒ (0) | 2022.02.23 |