iOS 개발
![[MusicKit] MediaPlayer 프레임워크 (2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBzy1D%2FbtrvFBJfJSh%2F1WxPJNolCocfUPoforTPak%2Fimg.jpg)
[MusicKit] MediaPlayer 프레임워크 (2)
사실 MediaPlayer 프레임워크를 통해서 음악앱을 만드는 일은 그렇게 어렵지 않습니다ㅎㅎ 나온지 얼마 되지 않은 기술이기 때문에, 좀 어색하다? 정도일거에요!! 아직 애플에서 만든 공식 듀토리얼은 없지만... 그래도 공식문서에서 나름 잘 설명해놓은 것 같아요. MusicKit에 대한 Documents를 쭉 읽고, 밑에 Topic 부분!!!을 한번 자세히 훑어보세요!! 대충 어떻게 이용하는 프레임워크구나 하는 감이 올 겁니다ㅎㅎ Apple Developer Documentation developer.apple.com 많은 항목들이 있지만, 기본적으로 요녀석들이 중요합니다!!! 왜냐면! 일단 재생하고 싶은 곡에 대해서 알아야 하고, 곡을 어떻게 재생시킬 지 알아야 하기 때문이죠!!! 자, 일단 곡에 대..
![[MusicKit] MediaPlayer 프레임워크 (1)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJfqPH%2FbtrvDP2x2IJ%2FzCz1xazkGraeFj6IfwqvRk%2Fimg.jpg)
[MusicKit] MediaPlayer 프레임워크 (1)
SwiftUI 프레임워크를 사용해서 음악 플레이어를 만들었었습니다. 제가 플레이어를 만들 때 사용한게 바로 MediaPlayer 프레임워크인데요! Apple Developer Documentation developer.apple.com 애플 문서를 보면, MediaPlayer프레임워크는 MusicKit의 일부라고 소개되어 있어요. MusicKit은 작년에 출시된 아주 따끈따끈한 기술인데요!! 개발자들은 MusicKit을 통해 Apple Music API를 이용할 수 있습니다. 즉, Apple Music을 이용한 앱을 만들 수 있는거죠!! 그럼 개발자들은 이것으로 무엇을 할 수 있을까요?? 일단 떠오르는 건 나만의 애플뮤직 플레이어를 만드는 거에요! 복잡하고 기능 많은 Apple Music 앱 대신, 정말..
![[CoreData] Relationship을 통해 Data를 관리하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd6BrY5%2FbtrvFBoXoux%2FHlkeAubok0bMCxbiw8Tlu1%2Fimg.png)
[CoreData] Relationship을 통해 Data를 관리하기
앱 출시 데드라인 전에, 데이터 시더를 통해 하드한 테스트를 해보았었습니다. 모든 일기들을 날짜에 따라 section을 나누고, 날짜마다 순서대로 정렬해서 불러오는 게 너무 느리지는 않을까 걱정이 되었기 때문이었는데 역시나.... 하루에 10번씩 일기를 쓰는 사람이 이 앱을 3년동안 사용했을 때를 가정하자, 일기 전체를 불러오는 속도가 너무도 현저하게 느려졌습니다. 물론 나중에는 필요한 정보만 긁어오는 방식으로 리팩토링을 할 것이지만, 여러 친구들과 이야기를 나눈 결과, 관계성을 설정해서 마치 인덱싱처럼 DB의 Date를 관리해야겠다는 결론이 나왔습니다. 하지만, 출시가 얼마 남지 않아 다른 오류들을 수정하느라 정신이 없는 상황이어서 일단 출시를 한 후에 수정하기 위해 남겨두었던 부분이었는데.... 멘토..
![[Auto Layout] Multiplier(2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFcoWg%2FbtrvBlnyE9q%2FjSQK2591GB5dIyUkKQ4X3k%2Fimg.png)
[Auto Layout] Multiplier(2)
코드로 하면 더 깔끔하지만, 공부하는 입장에서는 눈으로 보면서 하면 더 빠르게 이해가 가능하기 때문에 스토리보드를 사용해서 설명하였다. 복습하는 중에 혹시 놓칠만한 것들만 골라서 정리했으니, auto layout을 한번이라도 써본 사람이라면 끄덕 끄덕 하면서 빠르게 읽고 넘어가면 된다...ㅎㅎ Multiplier (2) Multiplier가 어떻게 작동하는지 알아보자. 이 부분을 정확하게 이해하고 넘어간다면, 확실히 auto layout을 보는 시야를 넓힐 수 있을 것이다. Alignment Constraints의 Multiplier의 경우를 보면서 한번 알아보자. 이렇게 View를 safe Area를 따라서 화면 가득 채워보자. 여기서 Top의 Multiplier를 2로 올리면, 이렇게 safe Are..
![[Auto Layout] Multiplier(1)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgUrPw%2FbtrvCmfsm7E%2FK1NxOrDcFhVPzTYBP3kyck%2Fimg.png)
[Auto Layout] Multiplier(1)
코드로 하면 더 깔끔하지만, 공부하는 입장에서는 눈으로 보면서 하면 더 빠르게 이해가 가능하기 때문에 스토리보드를 사용해서 설명하였다. 복습하는 중에 혹시 놓칠만한 것들만 골라서 정리했으니, auto layout을 한번이라도 써본 사람이라면 끄덕 끄덕 하면서 빠르게 읽고 넘어가면 된다...ㅎㅎ Multiplier (1) auto layout을 쓰기 전에, frame과 origin 혹은 center를 쓰면서, 각각의 비율을 계산해서 만들어본 경험이 있을 것이다. 물론 이 방법은 auto layout 과 당연히 다름없이 작동하고, 가끔(구동 중 새로운 view를 띄운다던가 하는 상황)은 더 편리할 때도 있을 것이다. 사실 auto layout을 공부하기 전에는 정밀하게 원하는 위치에 원하는 view를 배치하..
![[Auto Layout] Equal Constraints에 대해서](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fczz45Q%2FbtrvCnyDXzr%2FZk7QCuDvTkE2hWcWKuM2Vk%2Fimg.png)
[Auto Layout] Equal Constraints에 대해서
코드로 하면 더 깔끔하지만, 공부하는 입장에서는 눈으로 보면서 하면 더 빠르게 이해가 가능하기 때문에 스토리보드를 사용해서 설명하였다. 복습하는 중에 혹시 놓칠만한 것들만 골라서 정리했으니, auto layout을 한번이라도 써본 사람이라면 끄덕 끄덕 하면서 빠르게 읽고 넘어가면 된다...ㅎㅎ Equal Constraints Constraints는 "길이, 간격"으로 이해하면 된다. Top Constraints를 10을 줬다는 것은, Top부터 10 간격만큼 떨어진 곳에 view를 배치했다는 뜻이다. 아래 왼쪽의 그림처럼 3개의 View가 있다고 가정하자. 우리는 저 View들의 간격과 높이를 일정하게 맞추어서 오른쪽 그림처럼 만들고 싶다. 엥 너무 쉬운거 아니야? 먼저 모두들 View들의 상하좌우 Co..
![[UIGestureRecognizer] tableview와 함께 사용하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZgG8w%2FbtrvFBh9BBo%2FjLwOhk0MLkIGbk1RBY34lK%2Fimg.png)
[UIGestureRecognizer] tableview와 함께 사용하기
테이블 뷰는 기본적으로 scroll을 사용합니다. 그래서 tableView에 다른 제스처 액션을 추가하면, 작동하지 않습니다. 자세한 이유는 2021.11.17 - [iOS 개발] - [GestureRecognizer] Gesture 잘 사용하기 - 동시에 여러 gesture 사용하기, 주의점 [GestureRecognizer] Gesture 잘 사용하기 - 동시에 여러 gesture 사용하기, 주의점 제스처를 사용하는 방법은 간단합니다. 자! 저는 지금부터 infoView라는 제가 만든 View에 왼쪽으로 Swipe했을 때 어떤 동작이 실행되도록 해보겠습니다!! 먼저 우리는 제스처 인식기를 만들어주어야 hasensprung.tistory.com 이곳에 열심히 적어두었으니 꼭 참고하시길 바랍니다!! 이런..
![[UITableView] SwipeAction - cell 삭제 (확인 Alert와 함께)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpTYE6%2FbtrvE5qgk78%2Fz8y8FvqQ2G0lt0RLdta5j1%2Fimg.png)
[UITableView] SwipeAction - cell 삭제 (확인 Alert와 함께)
TableView는 자체적으로 Delegate를 통해, 스와이프 액선을 지정해주고 있습니다. 저는 Cell을 스와이프해서 해당 Cell을 삭제해주는 작업을 구현해보았습니다. Cell을 삭제할 때, Delete를 할 것인지 한번 확인하지 않으면, 사용자의 입장에서는 원치 않은 삭제를 할 수 있고 개발자는 이를 복구해줄 수 있는 툴을 만들어 주지 않는 이상, 반드시 사용자에게 정말 삭제할 것인지를 한번 확인받아야 한다고 생각합니다. 유저는 마치 쓰고 있던 블로그 글을 통채로 날린 느낌일 것이기 때문이에요..ㄸㄸ 다음은 제 tableView가 UITableViewDelegate를 채택해서 구현해야 하는 함수로 스와이프 하면 다음과 같은 삭제 버튼이 나타나게 됩니다. func tableView(_ tableVi..
![[UITextView] 줄 수, 글자 수 제한](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk1Zc7%2FbtrvDQNW4NL%2F97YU1uL14UlOhKmYOxeaqk%2Fimg.png)
[UITextView] 줄 수, 글자 수 제한
스택 오버플로우의 어떤 글을 보아도, 완벽하게 모든 상황을 커버하는 함수를 찾지는 못했습니당ㅜ 거의 대부분 어느정도 내 상황에 맞추어 커스텀을 해서 사용하는 것 같아요. 기록 앱을 출시하고 나서 대부분의 버그들은, 텍스트필드에서 나오네요... 정말 생각지도 못한 것들.. 개행만 있을때, 커다란 이모티콘만 있을 때 등등 이런 것들을 다 커버하기 위해서는 스택오버플로우를 그대로 사용해서는 안됩니다! 꼭 본인들의 상황에 맞추어 커스텀하고 예외처리 하셔서 쓰시길 바래요ㅎㅎ 그래도 나름? 괜찮은 함수를 공유할게요! limit TextView to certain number of lines in swift 2 I need to restrict my textview to only 6 lines. How do I li..