맥북 화면 일부 캡처 후 클립보드에 복사하려면
: Command + Shift + Control + 4를 누른 후 드래그하여 원하는 부분을 선택합니다.
줄 정렬
: command+a / control+i
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var txtHeight: UITextField! // UITextField! 타입으로 선언 - 암시적 언래핑 옵셔널
@IBOutlet weak var txtWeight: UITextField! // UITextField! 타입으로 선언 - 암시적 언래핑 옵셔널
@IBOutlet weak var lblResult: UILabel! // 결과를 표시할 UILabel
@IBAction func calcBmi(_ sender: UIButton) {
// 1. 강제 언래핑으로 입력된 텍스트를 Double로 변환
// txtHeight.text와 txtWeight.text가 nil일 가능성이 있기 때문에 강제 언래핑 (!)을 사용하여 값을 꺼냄
let height = Double(txtHeight.text!)! // 강제 언래핑 - txtHeight.text가 nil이면 런타임 에러 발생
let weight = Double(txtWeight.text!)! // 강제 언래핑 - txtWeight.text가 nil이면 런타임 에러 발생
print(height, weight) // 변환된 height와 weight 값을 출력하여 확인
// 2. BMI 계산
// 키는 cm 단위로 입력되었다고 가정, 따라서 m^2 단위로 변환하기 위해 *0.0001
let bmi = weight / (height * height * 0.0001)
// 3. BMI 결과를 소수점 첫째 자리까지 표현
let shortenedBmi = String(format: "%.1f", bmi)
// 4. BMI 값에 따라 판정 결과 결정
var body = "" // 판정 결과를 담을 변수
if bmi >= 40 {
body = "3단계 비만" // BMI가 40 이상일 때
} else if bmi >= 30 && bmi < 40 {
body = "2단계 비만" // BMI가 30 이상 40 미만일 때
} else if bmi >= 25 && bmi < 30 {
body = "1단계 비만" // BMI가 25 이상 30 미만일 때
} else if bmi >= 18.5 && bmi < 25 {
body = "정상" // BMI가 18.5 이상 25 미만일 때
} else {
body = "저체중" // BMI가 18.5 미만일 때
}
// 5. 결과 출력
print("BMI: \(shortenedBmi), 판정: \(body)")
lblResult.text = "BMI: \(shortenedBmi), 판정: \(body)" // 결과를 UILabel에 표시
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
nil 값 안전하게 처리하는 방법
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var txtHeight: UITextField!
@IBOutlet weak var txtWeight: UITextField!
@IBOutlet weak var lblResult: UILabel!
@IBAction func calcBmi(_ sender: UIButton) {
if txtHeight.text == "" || txtWeight.text == ""{ //nil이면 if문 실행
lblResult.textColor = .red
lblResult.text = "키와 체중을 입력하세요!"
return
} else {
let height = Double(txtHeight.text!)!
let weight = Double(txtWeight.text!)!
print(height,weight)
let bmi = weight/(height*height*0.0001)
let shortenedBmi = String(format: "%.1f", bmi)
var body = ""
if bmi >= 40 {
body = "3단계 비만"
} else if bmi >= 30 && bmi < 40 {
body = "2단계 비만"
} else if bmi >= 25 && bmi < 30 {
body = "1단계 비만"
} else if bmi >= 18.5 && bmi < 25 {
body = "정상"
} else {
body = "저체중"
}
lblResult.text = "BMI:\(shortenedBmi), 판정:\(body)"
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
guard — let으로 리팩토링
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var txtHeight: UITextField!
@IBOutlet weak var txtWeight: UITextField!
@IBOutlet weak var lblResult: UILabel!
@IBAction func calcBmi(_ sender: UIButton) {
// 키와 체중 입력값이 있는지 확인하고, 없으면 안내 메시지 출력
guard let heightText = txtHeight.text, let weightText = txtWeight.text,
let height = Double(heightText), let weight = Double(weightText) else {
lblResult.textColor = .red
lblResult.text = "키와 체중을 입력하세요!"
return
}
// BMI 계산
let bmi = weight / (height * height * 0.0001)
let shortenedBmi = String(format: "%.1f", bmi)
// BMI에 따른 판정 결과
let body: String
switch bmi {
case let x where x >= 40:
body = "3단계 비만"
case 30..<40:
body = "2단계 비만"
case 25..<30:
body = "1단계 비만"
case 18.5..<25:
body = "정상"
default:
body = "저체중"
}
// 결과 출력
lblResult.textColor = .black
lblResult.text = "BMI: \(shortenedBmi), 판정: \(body)"
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
판정결과에 따라 레이블 배경색 변경
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var txtHeight: UITextField!
@IBOutlet weak var txtWeight: UITextField!
@IBOutlet weak var lblResult: UILabel!
@IBAction func calcBmi(_ sender: UIButton) {
if txtHeight.text == "" || txtWeight.text == ""{ //nil이면 if문 실행
lblResult.textColor = .red
lblResult.backgroundColor = .yellow
lblResult.text = "키와 체중을 입력하세요!"
return
} else {
let height = Double(txtHeight.text!)!
let weight = Double(txtWeight.text!)!
print(height,weight)
let bmi = weight/(height*height*0.0001)
let shortenedBmi = String(format: "%.1f", bmi)
var body = ""
var color = UIColor.white
if bmi >= 40 {
color = UIColor(displayP3Red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)
body = "3단계 비만"
} else if bmi >= 30 && bmi < 40 {
color = UIColor(displayP3Red: 0.7, green: 0.0, blue: 0.0, alpha: 1.0)
body = "2단계 비만"
} else if bmi >= 25 && bmi < 30 {
color = UIColor(displayP3Red: 0.4, green: 0.0, blue: 0.0, alpha: 1.0)
body = "1단계 비만"
} else if bmi >= 18.5 && bmi < 25 {
color = UIColor(displayP3Red: 0.0, green: 0.0, blue: 1.0, alpha: 1.0)
body = "정상"
} else {
color = UIColor(displayP3Red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0)
body = "저체중"
}
lblResult.backgroundColor = color
lblResult.clipsToBounds = true
lblResult.layer.cornerRadius = 20
lblResult.textColor = .white
lblResult.text = "BMI:\(shortenedBmi), 판정:\(body)"
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
View를 여러 개로 만들고 싶어요 : Tab Bar Controller
Tab Bar Controller메뉴가 활성화 안 됨?
IOS 강의 자료 참고했습니다.
'IOS 기초' 카테고리의 다른 글
[IOS 기초] 14주차 (0) | 2024.12.05 |
---|---|
[IOS 기초] 13주차 BMI판정 앱(4) (1) | 2024.11.28 |
[IOS 기초] 12주차 BMI판정 앱(3) (1) | 2024.11.21 |
[IOS 기초] 10주 BMI 판정,동영상 재생,웹뷰 앱 (2) | 2024.11.07 |
[IOS 기초] 9주 (2) | 2024.10.31 |
[IOS 기초] 7주 Xcode로 간단한 앱 개발 (0) | 2024.10.17 |
[IOS 기초] 6주 Swift 문법 5(클래스 failable initializer 상속)파일 (4) | 2024.10.10 |
[IOS 기초] 5주 Swift 문법 4(일급시민 클로저 기초)파일 (0) | 2024.10.09 |