카테고리 없음

iOS 8주차 (10.31)

k0223 2024. 10. 31. 16:47

AppDelegate.swift 는 Swift 기반의 iOS 애플리케이션에서 애플리케이션의 라이프사이클을 관리하는 중요한 파일입니다.

이 파일은 앱이 시작될 때, 종료될 때, 백그라운드로 전환될 때 등의 이벤트를 처리합니다.

주요 기능은 다음과 같습니다:

앱 초기화: 앱이 시작될 때 필요한 설정을 수행합니다.
상태 변경 처리: 앱이 활성화되거나 비활성화될 때, 백그라운드로 전환될 때 등의 상태 변화에 대한 핸들러를 제공합니다.
푸시 알림 관리: 푸시 알림을 등록하고 처리하는 로직을 포함할 수 있습니다.
UI 초기화: 초기 화면을 설정하거나, 네비게이션 컨트롤러 등의 UI 구성을 수행합니다.
SwiftUI를 사용하는 경우, AppDelegate 대신 @main 어노테이션이 있는 구조체를 사용하여 애플리케이션의 진입점을 

정의할 수 있지만, 여전히 AppDelegate를 사용하여 기존 UIKit 구조와 통합할 수 있습니다.

 

SceneDelegate.swift는 iOS 13 이상에서 도입된 파일로, 다중 윈도우 환경을 지원하기 위해 사용됩니다. 

이 파일은 앱의 각 장면(scene)에 대한 생명주기를 관리합니다. 주요 기능은 다음과 같습니다:

장면 생명주기 관리: 앱의 장면이 생성, 활성화, 비활성화 및 종료될 때 호출되는 메서드를 통해 각 장면의 상태를 관리합니다.
UI 설정: 각 장면에 대해 사용자 인터페이스를 설정하고 구성하는 역할을 합니다. 예를 들어, 새로운 윈도우를 생성하거나 

기존 윈도우를 복원할 수 있습니다.
상태 복원: 앱이 다시 활성화될 때 이전 상태를 복원하는 기능을 제공합니다.
iOS 13 이전에는 모든 UI 및 상태 관리가 AppDelegate에서 이루어졌지만, 여러 장면을 지원하기 위해 

SceneDelegate가 추가되었습니다. 이를 통해 개발자는 더 나은 사용자 경험을 제공할 수 있습니다.

 

뤼튼ai를 통해 간단하게 배경색이 변하는 소스를 작성했습니다.

 

import UIKit // UIKit 프레임워크를 임포트하여 UI 구성 요소 사용

 

// ViewController 클래스를 정의, UIViewController를 상속받음

class ViewController: UIViewController {

    

    // 타이머를 저장할 변수

    var timer: Timer?

    

    // 뷰가 로드된 후 호출되는 메서드

    override func viewDidLoad() {

        super.viewDidLoad() // 부모 클래스의 viewDidLoad 호출

        

        // 타이머 설정: 1초마다 changeBackgroundColor 메서드를 호출

        timer = Timer.scheduledTimer(timeInterval: 1.0, // 타이머가 호출될 간격 (1초)

                                     target: self,     // 타이머를 호출할 대상

                                     selector: #selector(changeBackgroundColor), // 호출할 메서드

                                     userInfo: nil,   // 추가 정보 (사용하지 않음)

                                     repeats: true)    // 반복 여부 (true로 설정)

    }

    

    // 배경색을 변경하는 메서드

    @objc func changeBackgroundColor() {

        // 랜덤한 색상을 생성

        let randomColor = UIColor(

            red: CGFloat.random(in: 0...1),   // 0부터 1 사이의 랜덤한 빨강 값

            green: CGFloat.random(in: 0...1), // 0부터 1 사이의 랜덤한 초록 값

            blue: CGFloat.random(in: 0...1),  // 0부터 1 사이의 랜덤한 파랑 값

            alpha: 1.0                        // 불투명도 (1.0: 불투명)

        )

        // 생성된 랜덤 색상을 뷰의 배경색으로 설정

        view.backgroundColor = randomColor

    }

    

    // 뷰 컨트롤러가 메모리에서 해제될 때 호출되는 메서드

    deinit {

        // 타이머가 활성화되어 있다면 무효화하여 메모리 누수 방지

        timer?.invalidate()

    }

}

 

변수는 Outet 함수는 Action이라고 합니다.

레이블, 버튼 등 연결을 잘못했다면 Cinnections inspector을 반드시 확인해야됩니다.(매우 중요)

 

Storyboard Entry Point는 앱을 실행시 진입(시작)되는 화면을 표시해줍니다 따라서 삭제시 앱이 작동하지 않습니다.

Content Mode는 이미지을 변경해 크기에 맞게 사진을 늘리거나 줄일 수도있고 혹은 이미지의 크기에 맞게끔 사이즈를

조정해주기도 합니다.

print(sendr)실행시 보이는 소스들 입니다.

Reset 버튼을 만들어서 클릭시 초기상태로 돌아가게끔 했습니다.

버튼을 클릭시 숫자가 +, -가 되게끔 만들었습니다.

hellob_ver2.zip
0.26MB

 

03 원하는 이미지 화면에 출력하기 - 이미지 뷰

Do it! 스위프트로 아이폰 앱 만들기 입문, 송호정, 이범근 저,이지스퍼블리싱, 2023년 01월 20일

축소&확대 버튼이 있어 축소와 확대가 가능하며 오른쪽 버튼을 클릭시 전구의 불이 켜진 이미지와 꺼진 이미지로 변경 가능합니다.


04 데이트 피커 사용해 날짜 선택하기

Do it! 스위프트로 아이폰 앱 만들기 입문, 송호정, 이범근 저,이지스퍼블리싱, 2023년 01월 20일

룰렛처럼 화면을 슬라이드하여 원하는 날짜로 변경이 가능했습니다.


05 피커 뷰 사용해 원하는 항목 선택하기

Do it! 스위프트로 아이폰 앱 만들기 입문, 송호정, 이범근 저,이지스퍼블리싱, 2023년 01월 20일

이미지 룰렛을 슬라이드하여 이미지의 이름을 확인하며 이미지의 크기를 크게 띄어줍니다.


06 얼럿 사용해 경고 표시하기

Do it! 스위프트로 아이폰 앱 만들기 입문, 송호정, 이범근 저,이지스퍼블리싱, 2023년 01월 20일

버튼을 클릭시 메세지가 뜨며 키고, 끄며 제거하기까지 가능했습니다.

 

07 웹 뷰로 간단한 웹 브라우저 만들기

Do it! 스위프트로 아이폰 앱 만들기 입문, 송호정, 이범근 저,이지스퍼블리싱, 2023년 01월 20일

시작시 블로그에 연결되어 블로그의 화면이 보이며 실제로 블로그에 접속하여 사용하는 것이 가능했습니다.