오늘 공부한 것
H.I.G 학습
오늘 오전에 캠퍼들과 함께 아이폰 기본 앱들을 중심으로 해서 iOS 앱들의 구성요소에 대해서 정리하고 애플이 앱에 있어서 어떠한 점을 중요하게 생각하는지 알아보는 시간을 가졌다.
아래는 각 팀원들이 정리한 문서들을 모아서 정리한 것!
연락처 앱, 시계 앱, 설정앱, 미리 알림 앱, 메모 앱으로 알아보는 H.I.G:
- status bar
- 시스템에서 제공하는 status bar 사용
- 앱 디자인과 상태바의 디자인을 어울리게 만듦
- status bar는 컨텐츠를 볼 수 있게 투명하게 만듦
- Full-screen media를 표시할 때에는 일시적으로 status bar를 가리는 것을 고려함
- 영원히 status bar를 숨기는 것을 피해라
- Search bar
- 검색을 실행하기 위한 바
- clear button(x 모양 or "취소")이 오른쪽에 위치
- 만약에 필요하다면, "검색"이라는 hint를 명시함
- Navigation Bar
- 항시 Navigation bar가 보이는 형태이다.
- 반투명 상태, 키보드가 켜지면 사라짐
- Navigation Bar Titles
- 사용자 자신이 어느 view에 있는지 알 수 있게 Title을 보여줌
- Large Title을 설정해서 가운데가 아닌 크게 왼쪽에 위치시킬 수 있음
- Onboarding
- onboarding은 새로운 유저를 환영하는 페이지이면서 튜토리얼 같은 페이지이다
- Tab Bar
- 탭바는 스크린 아래쪽에 위치하며, 앱의 다른 섹션사이를 빠르게 전환시킬 수 있게 해준다.
- 키보드가 표시될 때 숨겨짐
- Segment Control
- 5개 이하의 세그먼트가 있어야 함
- 사용성을 개선하기 위해 세그먼트 수를 제한함
- Switch
- 꺼짐, 켜짐 / 스위치의 값을 설명하는 레이블 추가 하면 안된다. )
- 레이블을 제공할 시 중복되고 인터페이스 복잡해짐
- Modality
- 임시모드로 콘텐츠를 표시하는 디자인 기술
- 다음 페이지로 넘어가는 것이 아니라, 해당 페이지에서 간단하게 기능을 구현할 때 쓰이는 화면 전환 기법이다.
- TableView
- indexPath는 TableView의 행을 식별하는 인덱스 경로임
- TableView 안의 cell은 content와 accessory view로 이우어져있다.
- Navigation Controller을 사용하여 화면 전환
- Push & Pop 형식으로 전환됨
- Navigation Bar에는 BackButton과 타이틀이 표시된다
- Push된 화면의 Title은 이전 화면의 타이틀이 표시된다.
- 계층 구조를 가진다 (1 -> 2 -> 3 ) (1 -> 3 한번에 x)
묵찌빠 게임 (Step1 피드백 & Step2 진행)
- Comparable 프로토콜을 사용한 enum 형끼리의 비교값 출력
강경이 제안한 Comparable 프로토콜을 활용한 fency한 표현이 굉장히 인상깊었다
enum Hand: String, CaseIterable, Comparable {
static func < (lhs: RockPaperScissorsGame.Hand,
rhs: RockPaperScissorsGame.Hand) -> Bool {
if (lhs == .scissors && rhs == .rock)
|| (lhs == .paper && rhs == .scissors)
|| (lhs == .rock && rhs == .paper) {
return true
} else {
return false
}
}
case scissors = "1"
case rock = "2"
case paper = "3"
}
func gameResult(_ usersHand: Hand, vs computerHand: Hand) -> Bool {
if usersHand > computerHand {
print("이겼습니다")
return false
}
}
- CaseIterable 프로토콜을 사용하여 allCases 프로퍼티 활용
guard let computersHand = Hand.allCases.randomElement() else {
continue
}
야곰의 피드백을 통해서 Int.random(1...3) 을 하고 random 숫자 값에 대해서 Hand 열거형 값으로 바꿔주는 과정을
굉장히 간단하게 바꿀 수 있었다 👍🏼 👍🏼
고민했던 점
- 묵찌빠 게임 Step2 에서 중복되는 코드들에 대한 효율적인 정리
내일 계획
- 마인드 맵을 활용하여서 1주차, 2주차 공부한 것을 기록하기
- 이번 프로젝트에서 많이 사용한 enum에 대해서 정리해보기
- 8p.m특별미션 약속 늦지 않기!