출처 : SmileHan - iOS프로그래밍 기초
Auto Layout은 iOS에서 화면의 요소들이 다양한 화면 크기와 방향에 적응할 수 있도록 제약 조건을 설정해 배치와 크기를 동적으로 조정하는 레이아웃 시스템





12 - Int
"12" - String
Int("12") - Optional(12)
Int("hi") - nil
위와 같이 형변환에서도 nil이 발생할 수 있기 때문에 Optinal이 됨

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 == "" {
lblResult.textColor = .red
lblResult.text = "키와 체중을 입력하세요!"
return
}
else {
let weight = Double(txtWeight.text!)!
let height = Double(txtHeight.text!)!
let bmi = weight / (height*height*0.0001) // kg/m*m
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 = "저체중"
}
print("BMI:\(shortenedBmi), 판정:\(body)")
lblResult.text = "BMI:\(shortenedBmi), 판정:\(body)"
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
전체 선택 후 Ctrl + i




| 특징 | 매뉴얼 세그웨이 (Manual Segue) | 릴레이션십 세그웨이 (Relationship Segue) |
|---|---|---|
| 트리거 방식 | 코드에서 직접 호출하여 트리거함 | 두 뷰 컨트롤러 간의 관계에 의해 자동으로 트리거됨 (예: Table View와 Detail View) |
| 사용 위치 | 주로 버튼 클릭이나 특정 이벤트에서 사용됨 | 주로 UITableViewController 또는 UICollectionViewController에서 사용됨 |
| 설정 방식 | 스토리보드에서 뷰 컨트롤러 간 연결을 수동으로 설정 | 스토리보드에서 뷰 컨트롤러 간 관계를 설정하고, 자동으로 세그웨이가 생성됨 |
| 데이터 전달 | 코드에서 직접 데이터를 전달하거나 준비 작업을 해야 함 | 자동으로 관련된 데이터를 전달하는 기능 제공 (예: prepare(for:sender:) 호출 필요 없음) |
| 주요 사용 사례 | 특정 이벤트나 버튼 클릭을 통해 화면 전환이 필요할 때 사용 | Table View와 Detail View와 같은 관련된 화면들 간의 데이터 전송에 사용 |
| 자동화 | 세그웨이를 호출하는 코드 작성이 필요함 | 관계 설정에 따라 자동으로 세그웨이가 설정되고 데이터가 자동으로 연결됨 |

