CoreData CoreMotion - 커스텀 폰트 ## 첫 번쨰 페이지 - NavigationController - rightBarButtonItem - UITableView ( CD의 데이터를 표현 ) - scroll ( 데이터 10개씩) - 끝에 도달할 시 로딩 - cell ( 버튼 2개 ) - 삭제 ( CoreData, json 모두 ) - Play ( 세 번쨰 화면 이동 ) ## 두 번쨰 페이지 - 상단 네비게이션바 - 중앙 타이틀 (측정하기) - rightBarButtonItem (저장) - 측정된 값이 있을 경우 데이터를 CoreData와 FileManager를 이용해서 json으로 저장합니다. - 값이 없을 경우 데이터가 없다는 알림을 표시합니다. - 저장하는 json의 포맷은 자유롭게 설정합니다. - 측정 중 저장버튼을 누를 수 없습니다. - 데이터 저장은 비동기로 처리하고 Activity Indicator를 표시해주세요. - 저장이 성공하면 Indicator를 닫고, 첫 번째 페이지로 이동합니다. - 저장이 실패하면 Indicator를 닫고, 페이지를 이동하지않고 실패 이유를 Alert으로 띄웁니다. - segment control - Acc - Gyro - lock같은걸 걸어야 함(측정시작후에) - GraphView - CoreMotion - CMMotionManager -> acc, gyro - acc, gyro 2가지로 타입이 나누어집니다. - acc로 되어있을 경우 측정 시 acc 데이터를 가져와서 화면에 표시합니다. - gyro로 되어있을 경우 측정 시 gyro 데이터를 가져와서 화면에 표시합니다. - 측정 중에는 타입이 변경되지 않아야합니다. 값 가져와서 그래프 그리기 - 하단 버튼 2개 - 측정 - 측정 버튼을 누르면 타이머가 동작하고 10hz로 SegmentControl에 설정된 값에 따라서 acc 혹은 gyro의 x, y, z값을 가져옵니다. - 타이머는 1초에 10개의 데이터를 가져올 수 있도록 0.1초로 설정하고, timeout 시간은 600입니다. - 각 틱마다 x, y, z 값을 모두 저장합니다. - 다시 측정하는 경우 기존의 값들을 초기화합니다. - 정지 - 타이머가 동작할 때만 활성화 합니다. - 버튼을 누르면 타이머를 멈춥니다. ## 세 번쨰 페이지 - 페이지 타입 정의 - Navigation Bar - title -> 다시보기 - Label - 1. 날짜 2022/09/07 15:10:11 - 2. Play or View - GraphView - 타입에 따라 Play / Stop 버튼 유무 - 타이머 레이블 애니메이션을 3 path 동시에 실행 gyro data 객체 구현