티스토리 뷰

[iOS프로그래밍기초] 8주차

 

AppDelegate와 SceneDelegate는 iOS 애플리케이션에서 애플리케이션의 생명 주기와 사용자 인터페이스를 관리하는 데 중요한 역할을 합니다. 각각의 파일이 수행하는 기능을 자세히 설명하겠습니다.

AppDelegate
애플리케이션 생명 주기 관리:

AppDelegate는 애플리케이션의 전체 생명 주기를 관리합니다. 애플리케이션이 시작될 때, 종료될 때, 백그라운드로 전환될 때 등의 이벤트를 처리합니다.
초기 설정:

didFinishLaunchingWithOptions 메소드에서 애플리케이션이 시작될 때 초기 설정을 할 수 있습니다. 예를 들어, 데이터베이스 초기화나 사용자 기본 설정 로드 등을 수행할 수 있습니다.
푸시 알림 및 외부 URL 처리:

푸시 알림을 수신하거나 외부 URL을 통해 애플리케이션이 열릴 때의 처리를 담당합니다.
SceneDelegate
다중 씬 지원:

iOS 13부터 도입된 SceneDelegate는 다중 씬(멀티태스킹)을 지원합니다. 즉, 사용자가 여러 개의 창을 동시에 열 수 있는 기능을 제공합니다.
씬 생명 주기 관리:

각 씬의 생명 주기를 관리합니다. 씬이 생성될 때, 활성화될 때, 비활성화될 때, 종료될 때 등의 이벤트를 처리합니다.
UI 구성:

SceneDelegate에서 각 씬의 사용자 인터페이스를 설정하고 관리합니다. 예를 들어, 새로운 씬이 생성될 때 어떤 뷰 컨트롤러를 표시할지 결정할 수 있습니다.
요약
AppDelegate: 애플리케이션 전체의 생명 주기를 관리하며 초기 설정 및 백그라운드 처리 등을 담당합니다.
SceneDelegate: 각 씬의 생명 주기와 사용자 인터페이스를 관리하며, 멀티태스킹 환경을 지원합니다.
이 두 파일은 함께 작동하여 iOS 애플리케이션의 구조와 동작을 지원합니다.

 


 

기존 소스 변경하기

 

//
//  ViewController.swift
//  HelloJin
//
//  Created by 소프트웨어컴퓨터 on 2024/10/17.
//

import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var lable: UILabel!
    @IBOutlet weak var txtName: UITextField!
    
    var timer: Timer?
    
    @IBAction func btnSend(_ sender: UIButton) {
        lable.text = "Hello, " + (txtName.text ?? "")
        print(lable.text ?? "", txtName.text ?? "")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Timer 설정: 1초마다 배경색 변경
        timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(changeBackgroundColor), userInfo: nil, repeats: true)
    }
    
    @objc func changeBackgroundColor() {
        // 랜덤한 배경색 생성
        let randomColor = UIColor(red: CGFloat(arc4random() % 256) / 255.0,
                                   green: CGFloat(arc4random() % 256) / 255.0,
                                   blue: CGFloat(arc4random() % 256) / 255.0,
                                   alpha: 1.0)
        self.view.backgroundColor = randomColor
    }
    
    deinit {
        // Timer 해제
        timer?.invalidate()
    }
}

 

앱을 실행하면 배경색이 주기적으로 바뀝니다.

 

import UIKit // UIKit 프레임워크를 임포트하여 사용자 인터페이스 관련 기능을 사용합니다.

class ViewController: UIViewController { // ViewController 클래스를 정의하고 UIViewController를 상속받습니다.
    
    var timer: Timer? // Timer 객체를 저장할 변수를 선언합니다.
    
    override func viewDidLoad() { // 뷰가 메모리에 로드된 후 호출되는 메소드입니다.
        super.viewDidLoad() // 부모 클래스의 viewDidLoad 메소드를 호출하여 기본 설정을 수행합니다.
        
        // Timer 설정: 1초마다 배경색 변경
        timer = Timer.scheduledTimer(timeInterval: 1.0, // 타이머의 간격을 1초로 설정합니다.
                                      target: self, // 타이머가 호출할 메소드가 있는 객체입니다.
                                      selector: #selector(changeBackgroundColor), // 호출할 메소드를 지정합니다.
                                      userInfo: nil, // 추가 정보를 전달할 필요가 없으므로 nil로 설정합니다.
                                      repeats: true) // 타이머가 반복 실행되도록 설정합니다.
    }
    
    @objc func changeBackgroundColor() { // 배경색을 변경하는 메소드입니다. @objc를 사용하여 Objective-C 런타임에서 호출할 수 있도록 합니다.
        // 랜덤한 배경색 생성
        let randomColor = UIColor(red: CGFloat(arc4random() % 256) / 255.0, // 랜덤한 빨간색 값 생성
                                   green: CGFloat(arc4random() % 256) / 255.0, // 랜덤한 초록색 값 생성
                                   blue: CGFloat(arc4random() % 256) / 255.0, // 랜덤한 파란색 값 생성
                                   alpha: 1.0) // 불투명도를 1로 설정하여 완전 불투명한 색상으로 만듭니다.
        self.view.backgroundColor = randomColor // 생성한 랜덤 색상을 뷰의 배경색으로 설정합니다.
    }
    
    deinit { // 객체가 메모리에서 해제될 때 호출되는 메소드입니다.
        // Timer 해제
        timer?.invalidate() // 타이머가 동작 중이라면 정지시킵니다.
    }
}

 

 

변수는 아울렛이라 하고, 함수는 액션이라 합니다~

 

 

뷰 컨트롤러 아주 중요하다!

 

 

이건 시험에 매년 나오기 때문에 주의해서 보자

 

 

print(sender) 결과

 

 

리셋 버튼을 만들었다.

 

//
//  ViewController.swift
//  HelloJin
//
//  Created by 소프트웨어컴퓨터 on 2024/10/17.
//

import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var lable: UILabel!
    //@IBOutlet weak var lblHello: UILabel!
    @IBOutlet weak var txtName: UITextField!
    @IBAction func btnSend(_ sender:UIButton) {
        lable.text = "Hello, "+txtName.text!
        print(lable.text, txtName.text)
        //print(sender)
    }
    
    @IBAction func resetBtn(_ sender: UIButton) {
        lable.text = "안녕하세요!"
        txtName.text = ""
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //print("Start")
        // Do any additional setup after loading the view.
    }


}

 

 

 

 

숫자 더하는 UI 만들었다. (계산기?)

 

//
//  ViewController.swift
//  HelloJin
//
//  Created by 소프트웨어컴퓨터 on 2024/10/17.
//

import UIKit

class ViewController: UIViewController {
    var x = 0
    @IBOutlet weak var lvlnumber: UILabel!
    @IBOutlet weak var lable: UILabel!
    //@IBOutlet weak var lblHello: UILabel!
    @IBOutlet weak var txtName: UITextField!
    @IBAction func btnSend(_ sender:UIButton) {
        lable.text = "Hello, "+txtName.text!
        print(lable.text, txtName.text)
        //print(sender)
    }
    
    @IBAction func resetBtn(_ sender: UIButton) {
        lable.text = "안녕하세요!"
        txtName.text = ""
    }
    
    @IBAction func btnUp(_ sender: UIButton) {
        x = x + 1
        lvlnumber.text = String(x)
        
    }
    
    @IBAction func btnDown(_ sender: UIButton) {
        x = x - 1
        lvlnumber.text = String(x)
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //print("Start")
        // Do any additional setup after loading the view.
    }


}

 

02 Hello World 앱 만들며 Xcode에 완벽 적응하기
03 원하는 이미지 화면에 출력하기 - 이미지 뷰
04 데이트 피커 사용해 날짜 선택하기
05 피커 뷰 사용해 원하는 항목 선택하기
06 얼럿 사용해 경고 표시하기
07 웹 뷰로 간단한 웹 브라우저 만들기
08 맵 뷰로 지도 나타내기
09 페이지 이동하기 - 페이지 컨트롤
10 탭 바 컨트롤러 이용해 여러 개의 뷰 넣기
11 내비게이션 컨트롤러 이용해 화면 전환하기
12 테이블 뷰 컨트롤러 이용해 할 일 목록 만들기
13 음악 재생하고 녹음하기
14 비디오 재생 앱 만들기
15 카메라와 포토 라이브러리에서 미디어 가져오기
16 코어 그래픽스로 화면에 그림 그리기
17 탭과 터치 사용해 스케치 앱 만들기
18 스와이프 제스처 사용하기
19 핀치 제스처 사용해 사진을 확대/축소하기

 

 

 

 

 

 

'대학교 > iOS프로그래밍기초' 카테고리의 다른 글

[iOS 프로그래밍기초] 10주차  (5) 2024.11.14
[iOS프로그래밍기초] 9주차  (1) 2024.11.07
옵셔널 타입  (0) 2024.10.31
[iOS프로그래밍기초] 7주차  (2) 2024.10.17
[iOS프로그래밍기초] 6주차  (2) 2024.10.10
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함