iOS 프로그래밍 13주차 Report (BMI 앱 만들기)
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 에서 두개의 사이트로 이동할 수 있는 기능을 구현했습니다.