iOS 프로젝트/TLDR 9

[iOS] TLDR 개발 일지 - Summarize ViewModel 구현

서론 마지막 TLDR 개발일지인 Summarize ViewModel 구현입니다. 선택한 키워드를 어떻게 관리하는지 고민한 내용을 다룹니다. TLDR 앱 출시도 완료했으니 많은 관심 부탁드려요. [iOS] TLDR 개발 일지 - TLDR 앱 출시 앱스토어 등록 완료 앱스토어 등록을 완료했습니다~!! 앱스토어에 TLDR이라고 검색하면 저희 앱이 나와요 ㅎㅎ 링크는 https://apps.apple.com/kr/app/tldr/id6444666209 여기! PC는 아래 QR을 아이폰으로 인식하 jeong9216.tistory.com 키워드 ViewModel TLDR 앱에는 선택한 키워드를 TextView에 하이라이트 해주는 기능이 있습니다. 이 기능때문에 선택한 키워드를 Collection으로 관리해줘야 했어..

[iOS] TLDR 개발 일지 - TLDR 앱 출시

앱스토어 등록 완료 앱스토어 등록을 완료했습니다~!! 앱스토어에 TLDR이라고 검색하면 저희 앱이 나와요 ㅎㅎ 링크는 https://apps.apple.com/kr/app/tldr/id6444666209 여기! PC는 아래 QR을 아이폰으로 인식하세요. TLDR 앱은 미리 앱 소개 포스팅도 했었는데요. (TLDR 개발 일지 - 앱 소개) 조금 더 편하게 개선하였으니 구경 한 번씩 해보세요. 피드백 사항이 있다면 댓글로 알려주시면 감사하겠습니다. 감사합니다! 아직은 초보 개발자입니다. 더 효율적인 코드 훈수 환영합니다! 공감과 댓글 부탁드립니다.

[iOS] TLDR 개발 일지 - Summarize 화면 View 구현

Summarize 화면 Summarize 화면은 요약 글의 키워드와 요약 글을 볼 수 있는 화면입니다. 요약 글에는 키워드가 하이라이트 처리되어 있는데요. 키워드 리스트 중 하나를 클릭하면 그 키워드만 하이라이트가 됩니다. Summarize 화면의 핵심 View는 상단의 키워드 리스트와 텍스트 하이라이트입니다. 텍스트 하이라이트는 UITextView 원하는 문자에만 색상 넣기(여러 개도 OK)에서 다루었기 때문에 여기에서 따로 작성하진 않을게요. 키워드 리스트 키워드 리스트는 키워드 길이마다 셀의 길이를 다르게 해줘야 합니다. 즉, 동적으로 셀의 길이를 결정해줘야 해요. 이 처리를 해주지 않으면 이런 웃긴 모양이 되어버려요 ㅋㅋ 그럼 어떻게 동적으로 셀의 크기를 결정해줄까요? 저는 UICollection..

[iOS] TLDR 개발 일지 - 홈 화면 기능 구현

홈 화면 기능 구현 TLDR 홈 화면은 긴 글을 입력하고 버튼을 누르면 서버에 긴 글을 전송합니다. 오늘은 ViewModel 구현과 서버에 전송하는 부분에 대해 다루겠습니다. ViewModel 구현 홈 화면의 기능이 많지 않기 때문에 ViewModel도 그리 길지 않습니다. ViewModel은 구조체를 이용해서 구현했습니다. 상속, 객체 비교같은 클래스의 특성을 이용하지 않기 때문에 구조체를 이용했어요. 그리고 ViewModel에서 text 데이터를 가지고 있게 했습니다. 사용자가 text를 입력하면 updateText 메서드를 통해 해당 Observable의 데이터를 갱신합니다. text가 갱신되면 ViewController의 데이터 바인딩 부분에서 View를 업데이트 합니다. TextView에 tex..

[iOS] TLDR 개발 일지 - 홈 화면 View 구현

서론 이번 포스팅은 홈 화면 View 구현에 대한 이야기입니다. 서버 통신 관련 내용은 다음 포스팅에 작성할게요. 이번 구현 내용에서도 MVVM에 대한 고민점이 포함되어 있습니다. ViewController를 View로만 사용한다는 게 직접 해보니 꽤 어렵네요... 이미 잘 되어 있는 MVVM 프로젝트를 참고하면서 하면 과정이 효율적일 수 있습니다만, 제가 직접 고민하는 과정이 사라질 거 같아서 일부러 보지 않고 있습니다. 혹시나... 궁금해하시는 분이 계실 거 같아서 ㅎㅎㅋㅋ 프로젝트가 작은 편이라 제가 먼저 한 번씩 고민해본 뒤에 모범 MVVM 프로젝트를 참고해서 다시 한 번 리팩토링을 할 계획입니다. 답답하셔도 조금만 참아주세요 ㅎㅎ 홈 화면 스크린샷 홈 화면 스크린샷을 먼저 보여드릴게요. 상단에 ..

[iOS] TLDR 개발 일지 - 구현(공통, 런치 화면 v2)

MVVM Observable 구현 MVVM은 Observable을 이용해 구현했습니다. RxSwift, Combine도 있지만 일단 가장 기본적인 방법으로 구현해보고 싶었습니다. 프로퍼티 옵저버를 이용해 value가 변경되면 등록한 리스너를 실행합니다. 이렇게 MVVM의 데이터 바인딩을 구현하였습니다. 추후 RxSwift나 Combine을 이용해 리팩토링을 할건데 둘 중 무엇을 선택할지는 그때 상황을 봐야할 거 같네요. 웬만하면 프레임워크인 Combine을 선택하지 않을까 싶습니다. HttpError 구현 Http 에러 상황에 따라 catch를 다르게 하면 예외처리를 좀 더 세부적으로 할 수 있겠다고 생각했습니다. 그래서 HttpError라는 열거형을 구현했어요. 근데 명확하게 구현하는 게 무척 어렵더라..

[iOS] TLDR 개발 일지 - 설계

1편 - TLDR 개발 일지 - 앱 소개 2편 - TLDR 개발 일지 - 기획 서론 이전에는 설계에 대한 포스팅을 따로 하지 않았습니다. 설계의 중요성을 크게 생각하지 않아서 테스트 미흡, 지저분한 코드 등 문제점이 많았습니다. 이번 포스팅에서는 디자인 패턴, 구현 방법 등 설계에 대한 내용을 다룹니다. 디자인패턴 이번 TLDR에서는 MVVM을 사용했습니다. (MVVM에 대한 내용은 MVVM with iOS 에서 확인해 주세요.) MVVM을 사용한 이유는 두 가지 입니다. 1. View 로직과 Business 로직 분리 MVVM은 View와 ViewModel로 View 로직과 Business 로직을 분리할 수 있습니다. 그래서 View가 없어도 비즈니스 로직을 테스트할 수 있어요. 이게 제일 좋았던 점이..

[iOS] TLDR 개발 일지 - 기획

TLDR 앱에서 집중한 점 TLDR 앱은 기능도 하나고 화면도 두 개 뿐인 작은 앱입니다. 지난 프로젝트들과 비교했을 때 기능은 가장 적지만, 기획 고민은 가장 많이 한 프로젝트가 아닐까 싶습니다. 이번 프로젝트는 사용자 입장에서 생각하려고 노력했습니다. 어떻게 구현하면 사용자가 편할까? 사용자가 정말 이 기능을 좋아할까? 라는 생각을 가지고 회의하면서 기획을 구체화했습니다. 메인 화면 메인 화면에서는 텍스트를 입력할 수 있습니다. 지난 포스팅에서 사용자가 붙여넣기를 더 쉽게 할 수 있는 방법이 없을까 고민하고 있다고 말씀 드렸었는데요. 상단바에 TL;DR 텍스트만 있는 게 무의미한 것 같아 이를 수정해서 Reset 버튼과 Paste 버튼을 추가했습니다. Paste 버튼 Paste 버튼은 사용자가 쉽게 ..

[iOS] TLDR 개발 일지 - 앱 소개

TLDR 앱 소개 요즘 사람들은 긴 글에 대한 거부감이 심하다고 합니다. 물론 저도 길이가 긴 글보다는 핵심만 딱! 있는 짧은 글을 좋아해요. 그래서 진행한 토이 프로젝트로 긴 글을 입력했을 때 핵심 요약글이 출력되는 앱입니다. 그래서 앱 이름이 TLDR이에요 ㅎㅎ Too Long; Didn't Read의 줄인 말로 너무 길면 읽지 않는다는 의미라고 하네요. (참고로 한국어 앱 이름은 별다줄임 ㅎ;) 이번 포스팅도 핵심만! 짧게! 앱 소개만 작성하고 다음 포스팅부터 개발 일지를 작성해보겠습니다. 개발은 진행 중이고 연말에 앱스토어에 올릴 예정입니다. 현재는 앱스토어 출시 완료했습니다! (https://jeong9216.tistory.com/573) 스플래시 화면 스플래시 화면입니다. 가운데 TL;DR이 ..

반응형