-
Swift 버튼을 눌러 연속적으로 이미지 바꾸기(.toggle 활용)개발...................../TIL 2024. 6. 21. 18:50
나는 원한다.
내가 에셋으로 저장한 이미지(image1, image2)가 버튼을 누를 때마다 변경되면 좋겠어요~
if-else문
만약에 imagaView의 이미지가 image1이면 버튼을 눌렀을 때 image2가 나온다. 아니라면, image1이 나와야 하니까.
변수 선언부터 할게요
private var isImage1Displayed = true // 현재 표시된 이미지가 image1인지 여부를 저장하는 변수
왜냐?
- 상태 추적: 이미지가 현재 image1인지 image2인지 알기 위해 변수가 필요하다. 이렇게 하면 버튼을 눌렀을 때 현재 상태를 확인하고, 그에 따라 이미지를 변경할 수 있다.
- 토글 로직: isImage1Displayed 변수를 사용하면 간단한 if-else 문으로 이미지를 토글(.toggle)할 수 있다.
그런데 여기까지만 하면 일회용밖에 안 된다. image1에서 image2 변경이 한 번만 가능하다.
.toggle
.toggle() 메서드는 Swift 표준 라이브러리에서 Bool 타입에 제공되는 메서드이다. 이 메서드는 Bool 값을 현재 값의 반대로 바꾸는 기능을 제공한다. 즉, true이면 false로, false이면 true로 바꾼다.
// 이미지 상태 토글 isImage1Displayed.toggle()
위에서 isImage1Displayed 변수를 먼저 선언해야 했던 이유 중 하나이다.
기억 나요..? 우리 Bool타입 변수 선언 했잖아..
private var isImage1Displayed = true // 현재 표시된 이미지가 image1인지 여부를 저장하는 변수
안 쓸 수 있는 방법도 있는데
그 경우 if문에서 이미지 이름을 비교하는 등의 방식으로 상태를 확인해야 하므로 코드가 복잡해질 수 있다.
물론,,,,,이번 과제의 경우는 아니지만,,,,,ㅎ
import UIKit class ViewController: UIViewController { private var isImage1Displayed = true // 현재 표시된 이미지가 image1인지 여부를 저장하는 변수 @IBOutlet weak var imageView: UIImageView! @IBOutlet weak var button: UIButton! @IBAction func buttonAction(_ sender: Any) { //버튼 색상 변경 self.button.tintColor = .green //사진1, 사진2 순차적으로 변경 if isImage1Displayed { self.imageView.image = UIImage(named: "image2") } else { self.imageView.image = UIImage(named: "image1") } // 이미지 상태 토글 isImage1Displayed.toggle() } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } }
버튼 관련된 메서드는 신경 노노
'개발..................... > TIL' 카테고리의 다른 글
#Preview macro, Xcode 코드베이스로 UI 설계할 때 유용한 팁 (0) 2024.06.27 Swift 코드베이스 준비하기(한 개의 페이지일 때) (0) 2024.06.24 Swift에서 현재 시간 불러오기와 유의점 (0) 2024.06.19 고차함수 reduce (0) 2024.06.13 20240612 오류가 없는데 콘솔창에 값이 출력되지 않아요_Command Line과 readLine()의 관계 (0) 2024.06.12