iOS

[ iOS ] ํŽ˜์ด์ง€ ์ด๋™ํ•˜๊ธฐ - ํŽ˜์ด์ง€ ์ปจํŠธ๋กค

Forest Yun 2021. 8. 20. 19:56
728x90

๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

 

๋ฌธ์ œ

ํŽ˜์ด์ง€ ์ปจํŠธ๋กค์„ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋ผ. ์ด๋ฏธ์ง€ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋„ ํ•จ๊ป˜ ์ถœ๋ ฅํ•˜๋ผ. ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.

 

 

๊ตฌํ˜„ ์ˆœ์„œ

  1. ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ
  2. ์•„์šธ๋ › ๋ณ€์ˆ˜์™€ ์•ก์…˜ ํ•จ์ˆ˜ ์ƒ์„ฑ
  3. ์ด๋ฏธ์ง€ ์ถœ๋ ฅ์— ์‚ฌ์šฉํ•  ์ด๋ฏธ์ง€ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด ์ƒ์„ฑ
  4. ํŽ˜์ด์ง€ ์ปจํŠธ๋กค ์•ก์…˜ํ•จ์ˆ˜ ์ฝ”๋“œ ์ž‘์„ฑ
  5. ์ดˆ๊ธฐ ํ™”๋ฉด ์„ค์ •

 

 

์ตœ์ข… ๊ฒฐ๊ณผ

 

 

 

 

 

 


1. ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ

 

 

ํŽ˜์ด์ง€ ์ปจํŠธ๋กค Page Control

UIPageControl: Shows progression through a list of pages.

ํŽ˜์ด์ง€ ๋ฆฌ์ŠคํŠธ์˜ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ณด์—ฌ์ค€๋‹ค.

 

 

 

 

 

 

 

 


2. ์•„์šธ๋ › ๋ณ€์ˆ˜์™€ ์•ก์…˜ ํ•จ์ˆ˜ ์ƒ์„ฑ

 

์•„์šธ๋ › ๋ณ€์ˆ˜

    @IBOutlet var lblPageIndex: UILabel! //text ์†์„ฑ ์‚ฌ์šฉ
    @IBOutlet var imgView: UIImageView! //image ์†์„ฑ ์‚ฌ์šฉ
    @IBOutlet var pageControl: UIPageControl! //current, ์ „์ฒด ํŽ˜์ด์ง€ ์ˆ˜ ์„ค์ •, ์ƒ‰ ์„ค์ • ์†์„ฑ ์‚ฌ์šฉ

 

lblPageIndex : text ์†์„ฑ ์‚ฌ์šฉ

imgView : image ์†์„ฑ ์‚ฌ์šฉ

pageControl : numberOfPages, currentPage, pageIndicatorTintColor, currentPageIndicatorTintColor ์†์„ฑ ์‚ฌ์šฉ

numberOfPages The number of pages the receiver shows (as dots).
์ œ๊ณต์ž๊ฐ€ ์ถœ๋ ฅํ•  ํŽ˜์ด์ง€ ์ˆ˜. ์ฆ‰, ํŽ˜์ด์ง€์ปจํŠธ๋กค์˜ ์ „์ฒด ํŽ˜์ด์ง€ ์ˆ˜
currentPage The current page, shown by the receiver as a white dot.
์ œ๊ณต์ž์˜ํ•ด ๋ณด์—ฌ์ง€๊ณ  ์žˆ๋Š” ํ˜„์žฌ ํŽ˜์ด์ง€. ํ˜„์žฌ ํŽ˜์ด์ง€ ์ธ๋ฑ์Šค
pageIndicatorTintColor The tint color to be used for the page indicator.
ํŽ˜์ด์ง€ ์ธ๋””์ผ€์ดํ„ฐ์— ์‚ฌ์šฉ๋˜๋Š” ์ƒ‰.
currentPageIndicatorTintColor The tint color to be used for the current page indicator.
ํ˜„์žฌ ํŽ˜์ด์ง€ ์ธ๋””์ผ€์ดํ„ฐ์— ์‚ฌ์šฉ๋˜๋Š” ์ƒ‰. 

 

 

 

์•ก์…˜ ํ•จ์ˆ˜

    //Evemt - value Change : ํŽ˜์ด์ง€๊ฐ€ ๋ณ€ํ•˜๋ฉด ํ˜ธ์ถœ๋œ๋‹ค.
    @IBAction func pageChange(_ sender: UIPageControl) {
       
    }

pageChange : ํŽ˜์ด์ง€ ์ปจํŠธ๋กค์˜ ๊ฐ’์ด ๋ณ€ํ•˜๋ฉด ํ˜ธ์ถœ๋œ๋‹ค.

Event : value Changed

์•ก์…˜ํ•จ์ˆ˜ ์ƒ์„ฑ ์‹œ ์•ก์…˜ ํ•จ์ˆ˜๋ฅผ ์–ธ์ œ ์‹คํ–‰ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํ•ญ๋ชฉ์ธ Event ์ข…๋ฅ˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, value Changed์˜ ๊ฒฝ์šฐ ๊ฐ’์ด ๋ณ€ํ•  ๋•Œ ํ˜ธ์ถœ๋œ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 


3. ์ด๋ฏธ์ง€ ์ถœ๋ ฅ์— ์‚ฌ์šฉํ•  ์ด๋ฏธ์ง€ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด ์ƒ์„ฑ

์‚ฌ์ง„์„ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•œ ํ›„ ํ•ด๋‹น ์‚ฌ์ง„ ํŒŒ์ผ๋“ค์˜ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค. ํ™•์žฅ์ž ๋ช…๋„ ํ•„์ˆ˜์ ์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

import UIKit

var images = ["WallaceAndGromit_putArmsAround.jpg",
              "WallaceAndGromit_playingMusic.jpg",
              "WallaceAndGromit_face.png"]


class PageControlMissionViewController: UIViewController {
   ...
}

 

 

 

 

 

 

 

 

 


4. ํŽ˜์ด์ง€ ์ปจํŠธ๋กค ์•ก์…˜ํ•จ์ˆ˜ ์ฝ”๋“œ ์ž‘์„ฑ

    //Evemt - value Change : ํŽ˜์ด์ง€๊ฐ€ ๋ณ€ํ•˜๋ฉด ํ˜ธ์ถœ๋œ๋‹ค.
    @IBAction func pageChange(_ sender: UIPageControl) {
        imgView.image = UIImage(named: images[pageControl.currentPage])
        lblPageIndex.text = String(pageControl.currentPage + 1)
    }

ํŽ˜์ด์ง€๊ฐ€ ๋ณ€ํ•˜๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ์ด๋ฏธ์ง€๋กœ imgView๋ฅผ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐ์—ด ์ด๋ฏธ์ง€ ์ด๋ฆ„ ์ค‘ ํ˜„์žฌ ํŽ˜์ด์ง€ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ์ด๋ฏธ์ง€ ์ด๋ฆ„์„ ๊ฐ€์ ธ์™€ UIImage ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ์ด๋ฏธ์ง€๋ฅผ imgView์˜ image ์†์„ฑ์— ํ• ๋‹นํ•œ๋‹ค. 

lblPageIndex๋„ ๋ฐ”๋€ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋กœ ๋ณ€๊ฒฝํ•ด ์ค€๋‹ค. ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๊ฐ€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค ํ• ๋‹น ์‹œ +1 ์„ ํ•œ๋‹ค.

 

 

 

 

 

 

 

 

 

 


5. ์ดˆ๊ธฐ ํ™”๋ฉด ์„ค์ •

์ดˆ๊ธฐ ํ™”๋ฉด์€ ๋ทฐ ๋กœ๋“œ ์‹œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์ธ viewDidLoad() ํ•จ์ˆ˜์— ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

    //๋ทฐ ๋กœ๋“œ ์‹œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //์‹œ์ž‘ ํ™”๋ฉด ์„ค์ •
        imgView.image = UIImage(named: images[0])
        lblPageIndex.text = "1"
        
        pageControl.numberOfPages = images.count
        pageControl.currentPage = 0
        pageControl.pageIndicatorTintColor = UIColor.gray
        pageControl.currentPageIndicatorTintColor = UIColor.green
    }

๋จผ์ € imgView๋Š” ์ด๋ฏธ์ง€ ์ด๋ฆ„ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ, ์ฆ‰ 0๋ฒˆ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด image๋ฅผ ์„ค์ •ํ•œ๋‹ค.

ํ˜„์žฌ ํŽ˜์ด์ง€ ์ธ๋ฑ์Šค๋ฅผ ์ถœ๋ ฅํ•˜๋Š” lblPageIndex์˜ text์—๋Š” 1์„ ํ• ๋‹นํ•œ๋‹ค.

pageControl์€ numberOfPages ์†์„ฑ์„ ์‚ฌ์šฉํ•ด ์ „์ฒด ํŽ˜์ด์ง€ ์ˆ˜๋ฅผ ์„ค์ •ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ „์ฒด ํŽ˜์ด์ง€ ์ˆ˜๋Š” ์ด๋ฏธ์ง€ ์ด๋ฆ„ ๋ฐฐ์—ด์˜ count ์†์„ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ ๋‹ค์Œ currentPage ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ํŽ˜์ด์ง€์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

pageIndicatorTintColor, currentPageIndicatorTintColor ์†์„ฑ์„ ํ•˜์—ฌ ํŽ˜์ด์ง€ ์ปจํŠธ๋กค์˜ ์ธ๋””์ผ€์ดํ„ฐ ์ƒ‰์„ ์„ค์ •ํ•œ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

 

๊ณต๋ถ€ ์ž๋ฃŒ

Do It! ์Šค์œ„ํ”„ํŠธ๋กœ ์•„์ดํฐ ์•ฑ ๋งŒ๋“ค๊ธฐ ๊ฐœ์ • 5ํŒ
SWIFT ๋ฌธ์„œ
728x90