6월, 2019의 게시물 표시

[iOS] UICollectionView Custom FlowLayout

이미지
최근에 업무중 개선포인트 를 정리하고자 합니다. 우선 iPhone, iPad 두가지 화면에서 SubMenu 부분의 Page처리가 된 icon부분을 하나의 View로 사용하여, 진입 및 그리는 부분의 통일화를 시키고자 합니다. 기존에 iPhone, iPad 두가지의 Xib가 따로 존재하였고 Xib를 합치는 과정에서 최대한 작업을 줄이고자 생각을 하였다. (이미지 참조) iPad 화면 iPhone 화면 우선 기존의 작업은 All CodeType에 - ScrollView + UIButton 좌표식   으로 되어있었다. iOS 7~8 부터 진행된 프로젝트이며, 급하게 진행되고 있었기 때문에 해당 방법은 틀리다고 생각하진 않으나, View가 Add가 되면 될 수록 좌표값이 맞지 않는 오류가 발생 하였다. 유지보수를 하는 개발자분들이라면, 이해하실게 다른사람이 짠 코드중 x,y 좌표 +3 이런식으로 되어있는 코드는 개발 당시에는 당연하게 이해하면서 작업이 진행되겠지만, 나중에 봤을때는 본인도 "뭐지..?" 라는 생각이 드는 코드이다. 필자도 이런코드를 최대한 개선하고 최신코드로 유지하는 부분을 작업할까 합니다. 그렇다면 기존에 방법에서 최대한 깔끔하게 개선하는 점은 어떻게 할까 고민을 하여 2가지 방법으로 구현하는 방법을 생각했다. 1. ScrollView + StackView 2. CollectionView 1번 방법 은 필자가 StackView를 자주 사용하다보니 당연하게 생각한 방법으로 폰일때는 문제가 없으나, 패드일때 조금 귀찮지만 Pageing 처리시 불필요한 Stack의 생성 결국 iPhone, iPad 부분에서 View의 갯수 및 계산법이 달라진다는 부분에서 과연 맞는걸까 고민하였다. 2번 방법 은 기존에 필자는 CollectionView는 기본적인 방법으로 사용하였었고, (이미지 참고) 가로 세로방향에 따라 그려지는 순서가 원하는 방식이 아

[iOS] Xcode SafeArea 값 가져오기

SafeArea 가 Xib, Storyboard 에서 추가는 기존에도 되어있었는데, 업무중 Xib, Stroyboard 없이 Source Code 에서만 접근해야하는 경우가 생겨 가져오는 Code 정리한다. 참고로 해당 정보로 가져올때는 View가 생성이 완료되는 시점때 가져오면 된다. Objective C if  (@available(iOS  11. 0 ,  * )) {     UIWindow  * window  =  UIApplication.sharedApplication.keyWindow;     CGFloat topPadding  =  window.safeAreaInsets.top;     CGFloat bottomPadding  =  window.safeAreaInsets.bottom;     CGFloat LeftPadding  =  window.safeAreaInsets.left;     CGFloat RightPadding  =  window.safeAreaInsets.right; } Colored by Color Scripter cs Swift if  #available(iOS  11. 0 ,  * ) {     let window  =  UIApplication.shared.keyWindow     let topPadding  =  window?.safeAreaInsets.top     let bottomPadding  =  window?.safeAreaInsets.bottom     let leftPadding  =  window?.safeAreaInsets.left     let rightPadding  =  window?.safeAreaInsets.right } Colored by Color Scripter cs * safeAreaInsert 는 iOS 11 이후부터 사용이 가능합니다.

2019 WWDC 참고사항

이미지
2019 WWDC 요약 1. tvOS : MultiUser 지원, 애플 아케이트 게임 서비스 지원 (플스, Xbox 패드 지원) 2. Apple Watch : WatchOS 6 부터 Watch 단독 앱 지원 및 Watch AppStroe 지원 3. iOS 13 : 다크모드 지원 및 편의성 강화, 2019년 9월 아이폰 XI 와 함께 공식 배포 예정, 사진앱 강화 4. iPad OS : iOS 디자인을 기본으로 한 화면에서 여러작업을 수행하는 멀티태스킹 강화 5. macOS - Catlina : iTunes가 팟캐스트, 뮤직, tv 앱으로 분리 정리된 글 링크 정리 2019 WWDC 정리 글 :  https://fernando.kr/m/11 개발자 관련 1. Swift UI 추가 (iOS 13 이후 부터) https://developer.apple.com/tutorials/swiftui 이번 2019 WWDC 는 예상되었던 부분 중 다크모드 지원 및 iTunes 종료(분리) 정도는 괜찮았으며, iPad OS, Swift UI 부분을 개발자 입장에서는 자세히 봐야 할 것 같다. 사전에 iOS13 에서 iPad의 SplitController 가 나온다고 하여, 멀티태스킹 관련 정보는 추가될 것 으로 예상하였으나, iPad OS 로 새롭게 나올줄은 몰랐다. 개발시 Universal 지원이 똑같이 사용이 가능한지 확인해볼 필요가 있을 것 같다. Swift UI 의 경우 기존에 RxSwift의 Code 스타일과 비슷하다고 생각하는데, 간결한 UI 나 그래프 애니메이션은 보기 좋게 구현할 수 있어 보인다. 개인적으로는 Xib, StroyBoard의 대체하려고 하지 않을까 생각이 든다. (SwiftUI Tutorials Site 에서 Xib, StroyBoard 가 보이지 않는것이 찜찜하다..) 해당 블로그 내용은 매년 발표하는 WWDC 정보를 개발자 입장에서 추후 다시보기 위해 정리한 내용입니다. 틀린정보가

[iOS, 라이브러리] Swift SideMenu 라이브러리 참고

이미지
프로젝트 진행중 Side or Slide Menu 가 필요했는데, Github 검색중 별점 3.6k (2019. 06월 기준) 으로 사용하고 있는 Side Menu 라이브러리가 있어서 사용해 볼까 한다. 라이브러리 주소 :  https://github.com/jonkykong/SideMenu 필자 샘플 주소 :  https://github.com/kimjiwook/SideMenuSample 필자도 딱 필요했던 기능을 갖추고 있어서 추후 또 사용할 가능성이 있어서 미리 정리해 놓을까 한다. 이외의 방식이라면, 아마 직접 만들어야 할 것 같다.