Multi Developer SuHo

iOS 프로그래밍 13주차 Report (BMI 앱 만들기) 본문

Swift 과제물

iOS 프로그래밍 13주차 Report (BMI 앱 만들기)

Dreaming Developer Student 2023. 11. 28. 09:37
SMALL

https://wrtn.ai/
뤼튼에서 소스를 구성해본 BMI 판정 예제소스 입니다.

 

 

 

wrtn

모두를 위한 AI 포털 뤼튼. AI 채팅부터 이미지 생성, 나만의 AI 제작까지, 언제 어디서나 생성형 AI와 함께하세요.

wrtn.ai

 

  • 모든 내용은 다음과 같은 자료를 활용하여 제작하게 되었습니다.
  • 출처: Do it! 스위프트로 아이폰 앱 만들기 입문, 송호정, 이범근 저,이지스퍼블리싱, 2023년 01월 20일

출처: https://www.yes24.com/Product/Goods/116918114

 

Do it! 스위프트로 아이폰 앱 만들기 입문 - 예스24

아이폰 분야 1위 도서, 개정 7판 출간!최신 버전인 스위프트 5.7, Xcode 14 반영!아이폰 앱 개발 분야 1위 도서, 『Do it! 스위프트로 아이폰 앱 만들기 입문』 개정 7판이 출간되었다. 이번 개정에서는

www.yes24.com

// 사용자의 키와 몸무게 정보를 저장하는 구조체
struct Person {


    var height: Double // 키 (미터 단위)
    var weight: Double // 몸무게 (킬로그램 단위)
}

// BMI를 계산하고 판정하는 클래스
class BMICalculator {
    var person: Person // 사용자 정보

    init(person: Person) {
        self.person = person
    }

    // 사용자의 BMI를 계산하는 함수
    func calculateBMI() -> Double {
        let heightInMeter = person.height / 100.0 // 키를 미터 단위로 변환
        return person.weight / (heightInMeter * heightInMeter) // BMI 계산 공식: 몸무게(kg) / 키(m)^2
    }

    // 사용자의 BMI 결과에 따라 다른 스토리를 반환하는 함수
    func getStoryForBMI() -> String {
        let bmi = calculateBMI()

        // BMI 결과에 따른 스토리 분기
        if bmi < 18.5 {
            return "당신은 저체중입니다. 건강한 식습관과 꾸준한 운동을 통해 체중을 증가시켜 보세요."
        } else if bmi < 23 {
            return "당신은 정상 체중입니다. 현재의 건강한 생활




 

alpha 
배경 설정을 할때는 인덱스를 조절하고 safe area  아래로 하면 인터페이스를 더욱 효과적으로 제공해준다


 




 


 







 







https://wrtn.ai/


iOS에서 사용하는 세그웨이(Segue)의 종류를 표로 정리해드리겠습니다. 세그웨이는 두 개의 뷰 컨트롤러 간의 화면 전환을 관리하는 역할을 합니다.

세그웨이 종류설명

Show (e.g. Push) 네비게이션 컨트롤러의 스택에 뷰 컨트롤러를 푸시합니다. 이전 뷰 컨트롤러로 돌아갈 수 있는 '뒤로' 버튼이 자동으로 생성됩니다.
Show Detail (e.g. Replace) 스플릿 뷰 컨트롤러의 세부 정보 뷰 컨트롤러를 교체합니다.
Present Modally 새로운 뷰 컨트롤러를 현재 뷰 컨트롤러 위에 모달 형식으로 표시합니다. 이 방식은 새로운 작업을 시작하거나 현재 작업을 중단하고 옵션을 선택하도록 사용자에게 요청할 때 유용합니다.
Present as Popover 팝오버 형식으로 새로운 뷰 컨트롤러를 표시합니다. 팝오버는 작은 양의 정보를 표시하거나 사용자에게 선택 사항을 제공하는 데 유용합니다.
Custom 개발자가 정의한 사용자 지정 세그웨이입니다. 이 세그웨이를 사용하려면 UIStoryboardSegue의 서브클래스를 작성하고 해당 클래스에서 화면 전환 애니메이션을 정의해야 합니다.

위 표는 간단한 설명을 포함하고 있습니다. 각 세그웨이의 동작은 뷰 컨트롤러의 컨텍스트와 함께 결정됩니다. 따라서, 각 세그웨이가 어떻게 동작하는지 이해하는 것은 중요합니다.



 






import AVKit
import AVFoundation

// ViewController 클래스
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    // 재생 버튼이 눌렸을 때 호출되는 함수
    @IBAction func playButtonTapped(_ sender: Any) {
        // 비디오 파일의 경로를 설정합니다.
        guard let path = Bundle.main.path(forResource: "BMI1", ofType:"mp4") else {
            debugPrint("BMI1.mp4 not found")
            return
        }

        // 비디오 파일의 URL을 생성합니다.
        let videoURL = URL(fileURLWithPath: path)

        // AVPlayerViewController 인스턴스를 생성하고 설정합니다.
        let playerViewController = AVPlayerViewController()
        playerViewController.player = AVPlayer(url: videoURL)

        // AVPlayerViewController를 현재 뷰 컨트롤러에 모달로 표시합니다.
        self.present(playerViewController, animated: true) {
            playerViewController.player!.play()
        }
    }
}





alt 키 누르고 ? 클릭하면 도움말이 나온다.

Swift에서 웹사이트를 로드하기 위해서는 WKWebView를 사용할 수 있습니다. WKWebView는 WebKit 프레임워크에서 제공하는 클래스로 웹 콘텐츠를 앱에 표시하는 데 사용됩니다.

아래는 "https://www.apple.com" 웹사이트를 로드하는 Swift 코드입니다

 

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    var webView: WKWebView!

    override func loadView() {
        webView = WKWebView()
        webView.navigationDelegate = self
        view = webView
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 웹사이트의 URL을 설정합니다.
        let url = URL(string: "https://www.apple.com")!
        webView.load(URLRequest(url: url))
        
        // 웹사이트에 대한 캐싱과 쿠키 사용을 허용합니다.
        webView.allowsBackForwardNavigationGestures = true
    }
}




 

 

 

 

 

 

 


네이버 홈페이지로 이동한 기능을 구현하였습니다.







Tab bar Controller 에서 두개의 사이트로 이동할 수 있는 기능을 구현했습니다.

LIST