iOS 기초 실습
IOS 기초 실습 11주차
노아입니다
2024. 11. 14. 16:48
BMI 어플리케이션 chatGPT 기획안
Outlets 이 제대로 연결되었나 확인
BMI 계산 함수
Swift Int 는 구조체이다.
소스의 문제점
- 옵셔널 강제 언래핑 문제: txtHeight.text!와 txtWeight.text!에서 강제 언래핑을 사용하고 있는데, 텍스트 필드에 값이 없거나 잘못된 값이 들어올 경우 앱이 크래시할 수 있습니다. guard let을 사용하여 안전하게 언래핑하는 것이 좋습니다.
- 높이 값 단위 오류: bmi 계산 부분에서 height * height * 0.0001과 같은 계산을 하는데, 일반적으로 BMI 계산에서는 키를 미터 단위로 변환해야 합니다. 현재 코드는 cm로 받았으므로 height / 100로 변환 후 계산해야 합니다.
- 레이블 업데이트 전 확인 필요: lblResult가 nil일 수 있으므로 레이블이 존재하는지 확인하는 것이 좋습니다.
수정한 소스
수정 후 결과
Guard let 을 이용한 소스 변경
- guard let을 사용해 txtHeight.text와 txtWeight.text를 안전하게 언래핑하고, 키와 몸무게가 0보다 큰지 확인합니다.
- 올바르지 않은 값이 입력된 경우, 적절한 메시지를 lblResult에 표시하고 함수를 종료합니다. 이렇게 하면 사용자가 숫자가 아닌 값을 입력하거나 값을 입력하지 않았을 때 발생할 수 있는 앱 크래시를 방지할 수 있습니다.
BackGround 컬러 변경 및 cornerRadius 설정
UISegmentedControl
UISegmentedControl은 여러 선택 항목 중 하나를 선택할 수 있는 컨트롤입니다. 각 세그먼트는 독립적으로 동작하며, 주로 옵션을 빠르게 전환할 때 유용하게 사용됩니다.
Tap Bar Controller
BMI Scene로 변경
HIG
HIG의 주요 목표와 원칙
Apple HIG는 크게 다음 세 가지 핵심 원칙에 따라 설계됩니다.
- Clarity (명확성)
인터페이스는 사용자에게 명확하게 정보를 전달해야 합니다. 모든 UI 요소는 목적을 명확히 하고, 혼란을 줄이기 위해 단순하면서도 명료하게 표현됩니다. 이를 통해 사용자가 즉각적으로 기능을 이해하고 사용할 수 있습니다. - Deference (겸손함)
UI는 콘텐츠를 돋보이게 하며, 불필요한 장식이나 과한 애니메이션은 배제합니다. 애플은 콘텐츠 중심의 디자인을 선호하며, UI 요소는 화면의 콘텐츠를 보조하는 역할을 해야 한다고 강조합니다. - Depth (깊이)
Apple의 UI 디자인은 계층적 깊이를 통해 유동성과 상호작용을 강조합니다. 사용자는 제스처와 트랜지션을 통해 자연스럽게 인터페이스를 탐색할 수 있어야 하며, 이를 통해 각 기능과 콘텐츠가 조직적으로 연결되어 있다는 느낌을 제공합니다.
Tap Bar HIG
Human Interface Guidelines(HIG)에서 Tab Bar는 화면 하단에 위치하여 사용자가 앱의 주요 섹션 사이를 쉽게 탐색할 수 있도록 하는 핵심적인 탐색 요소입니다. Tab Bar는 명확하고 직관적인 탐색 경험을 제공하기 위해 설계된다.
Manual Segue와 Relationship Segue
1. Manual Segue (수동 세그)
- 설명: Manual Segue는 이벤트(버튼 클릭 등) 또는 코드에 의해 트리거되는 세그입니다.
- 사용 방식: 주로 UIButton이나 UIBarButtonItem을 통해 직접 연결하여 화면을 전환할 수 있습니다. 또는 코드를 통해 수동으로 세그를 호출할 수 있습니다.
- 용도: 주로 특정 이벤트가 발생했을 때 조건에 따라 화면을 전환하거나, 특정 데이터를 전달하면서 화면 전환을 해야 할 때 사용합니다.
2.Relationship Segue (관계 세그)
- 설명: Relationship Segue는 컨테이너 뷰 컨트롤러에서 자식 뷰 컨트롤러 간의 관계를 설정하는 세그입니다.
- 사용 방식: UINavigationController, UITabBarController, UISplitViewController 등에서 각 자식 뷰 컨트롤러와의 관계를 설정할 때 사용됩니다. 보통 Storyboard에서 컨테이너 뷰 컨트롤러와 연결할 자식 뷰 컨트롤러 사이를 드래그하면 Relationship Segue로 자동 설정됩니다.
- 용도: 컨테이너 뷰 컨트롤러의 하위 관계를 설정할 때 사용하며, 이는 초기 관계를 설정하는 데 사용되기 때문에 추가적인 이벤트 없이 앱 시작 시 초기화됩니다.
체크 꼭 확인