[iOS/UI] ์ด๋ฏธ์ง ์ค์ผ๋ก ํ๋/์ถ์ํ๊ธฐ(feat. ์คํฌ๋กค๋ทฐ)
์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค!
์ค๋ ์์๋ณผ ๊ฒ์ ์ด๋ฏธ์ง๋ฅผ ํ๋ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ฐ๋ก ์์ํ ๊ฒ์~
Storyboard
๋ ์ด์์์ ์๋์ ๊ฐ์ด ์คํฌ๋กค๋ทฐ์ ์ด๋ฏธ์ง๋ทฐ๊ฐ ํฌํจ๋๊ฒ ํด์ฃผ์ธ์.
ViewController
๋จผ์ ์ด๋ฏธ์ง๋ทฐ์ ์คํฌ๋กค๋ทฐ๋ฅผ ์ฐ๊ฒฐํด์ฃผ์ธ์.
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var scrollView: UIScrollView!
์ด๊ธฐ ์ธํ ์ ์๋์ ๊ฐ์ด ํด์ฃผ์ธ์.
1. ์ด๋ฏธ์ง๋ทฐ์ ์ด๋ฏธ์ง๋ฅผ ์ํ๋ ๊ฒ์ผ๋ก ์ธํ ํด์ค๋๋ค.
2. ์คํฌ๋กค๋ทฐ์ ๋๋ฆฌ๊ฒ์ดํธ๋ฅผ ํ์ฌ ๋ทฐ์ปจํธ๋กค๋ฌ๋ก ์ค์ ํด์ฃผ์ธ์. (์์ง ์ค๋ฅ๊ฐ ๋ ๊ฑฐ์์.)
3. ์คํฌ๋กค๋ทฐ์ ์ฒ์ ์ค์ค์ผ์ผ์ ์ ํด์ค๋๋ค. (๋ฐ๋ก ์ค์ ํ์ง ์์ผ๋ฉด 1.0์ ๋๋ค.)
4. ์คํฌ๋กค๋ทฐ์ ์ต์ ์ค์ค์ผ์ผ์ ์ ํด์ค๋๋ค. (์ค์ ํด์ ์ถ์ํ ๋ ์ด ์ดํ๋ก๋ ์ค์ด๋ค์ง ์๊ฒ ์ค์ ํ๋ ๊ฒ์ ๋๋ค.)
5. ์คํฌ๋กค๋ทฐ์ ์ต๋ ์ค์ค์ผ์ผ์ ์ ํด์ค๋๋ค. (์ค์ ํด์ ํ๋ํ ๋ ์ด ์ด์์ ํ๋๋์ง ์๊ฒ ์ค์ ํ๋ ๊ฒ์ ๋๋ค.
func configure() {
imageView.image = UIImage(named: "์คํฐ์ง๋ฐฅ.png") //1
scrollView.delegate = self //2
scrollView.zoomScale = 1.0 //3
scrollView.minimumZoomScale = 1.0 //4
scrollView.maximumZoomScale = 2.0 //5
}
์์์ ์คํฌ๋กค๋ทฐ ๋๋ฆฌ๊ฒ์ดํธ๋ฅผ ํ์ฌ ๋ทฐ์ปจํธ๋กค๋ฌ๋ก ์ค์ ํ์ผ๋ ํ์ฅํด์ ํด๋น ๋๋ฆฌ๊ฒ์ดํธ๋ฅผ ์ฑํํด์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ UIScrollViewDelegate์ ๋ฉ์๋ ์ค ํ๋์ธ viewForZooming์ ์ฌ์ฉํ์ฌ ํ์ฌ ์ด๋ฏธ์ง๋ทฐ๋ก ๋ฐํํด์ค๋๋ค.
//MARK:- UIScrollViewDelegate
extension ViewController:UIScrollViewDelegate {
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return self.imageView
}
}
(viewForZooming์ ์คํฌ๋กค๋ทฐ์์ ํ์น ์ค์ด ๋ฐ์ํ์ ๋ ์ด๋ค ๋ทฐ๋ฅผ ํ๋/์ถ์๊ฐ ํ ์ง ์ ํด์ฃผ๋ ๊ฒ์ ๋๋ค.)
์คํ ํ๋ฉด
์๋์ ๊ฐ์ด ํ์น ์ค์ผ๋ก ํ๋/์ถ์๋ฅผ ํ ์ ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
(์๋ฎฌ๋ ์ดํฐ์์ ํ์น ์ค์ ํ๋ ๋ฐฉ๋ฒ์ Optionํค๋ฅผ ๋๋ฅด๊ณ ํ๋ฉด ๋ฉ๋๋ค.)
ํ์ง๋ง ๋ฌธ์ ์ ์ด ํ๊ฐ์ง ์์๋๋ฐ minimumZoomScale๊ณผ maximumZoomScale์ ์ ํด๋์๋
๊ทธ ์ดํ,์ด์์ผ๋ก ์ถ์/ํ๋๊ฐ ๋๊ณ ํ๋ฒ ํญ์ ํ๋ฉด ์ต์,์ต๋ ์ค์ค์ผ์ผ๋ก ๋์๊ฐ์ต๋๋ค.
์ ๋ ์์ ๊ทธ ์ดํ,์ด์์ผ๋ก ์ถ์/ํ๋๊ฐ ์๋๊ฒ ํ๊ธฐ ์ํด์ scrollViewDidScroll ๋ฉ์๋์ ์๋์ ๊ฐ์ด ์ถ๊ฐํด์ฃผ์์ต๋๋ค.
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.zoomScale <= 1.0 {
scrollView.zoomScale = 1.0
}
if scrollView.zoomScale >= 2.0 {
scrollView.zoomScale = 2.0
}
}
์ด๋ ๊ฒ ํ๋ฉด ์๋ฌด๋ฆฌ ํ๋ํด๋ ์ค์ค์ผ์ผ์ด 2.0 ์ด์ ํ๋๋์ง ์๊ณ ์๋ฌด๋ฆฌ ์ถ์ํด๋ 1.0 ์ดํ๋ก ์ถ์๋์ง ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
Source Code