본문 바로가기

IOS

(51)
Swift - ReactorKit2 https://moonggi-dev-story.tistory.com/48 글에 이어서 ReactorKit 에 대해 적도록 하겠습니다. 간단하게 Alamofire, SwiftyJSON 를 이용하여 통신을 진행 하도록 하겠습니다. 먼저 결과를 보여드리자면...... 1. 초기에 로딩전이라는 메세지를 띄운다 2. 통신 버튼 누를시 -> 로딩중 으로 바꾼뒤 통신이 완료 되면 결과 메세지와 함께 로딩 메세지도 변경한다. 1. View (ViewController) import UIKit import RxSwift import RxCocoa import RxGesture import ReactorKit class ViewController: UIViewController { let reactor = ViewReac..
Swift - ReactorKit Android, iOS 앱을 만들면서 많은 디자인 패턴들이 존재한다. 그중에 가장 많이 사용하는것이 MVVM 패턴이다. 여기서 MVVM 패턴이란? MVVM은 Model - View - ViewModel의 약자로 소프트웨어 아키텍처 패턴입니다. 간단하게.. 화면단을 보여주는 뷰 와 비즈니스 로직을 담당하는 뷰 모델 을 분리하여 프로젝트가 간결해지는 특징을 가지고 있습니다. ReactorKit 같은 경우 해당 MVVM 을 좀더 규칙적 이게 사용할수 있게 도와주는 라이브러리 입니다. 실제 많은 기업에서 현재 적용중인 디자인 패턴 입니다. 1. View는 Action(사용자 입력 등)을 Reactor에게 전달한다 2. Reactor는 전달받은 Action에 따라 비즈니스 로직을 수행한다. 3. 그 후 React..
Swift - Photos + CollectionView + Drag and Drops https://moonggi-dev-story.tistory.com/46 해당 게시글에 이어서 이번엔 디바이스에 저장되어있는 이미지를 드래그 앤 드롭으로 CollectionView의 순서를 바꾸는 동작을 진행하자. 해당 기능을 사용하기 위해는 DataSoruce 를 사용해야 한다. 하지만 기존에 RxCocoa 상에서 그대로 DataSoruce를 사용하게 되면 오류를 발생한다. 그러기 때문에 DataSoruce를 따로 만들어서 사용한다. 1. DataSoruce import UIKit import RxCocoa import RxSwift class DragDataSoruce : NSObject, UICollectionViewDataSource, RxCollectionViewDataSourceType { t..
Swift - Photos + CollectionView + Gesture Multiple Select 디바이스에 저장되어있는 이미지를 불러와서 CollectionView 에다가 적용하고 CollectionView에 제스쳐 이벤트를 통해 다중선택 및 단일 선택 할수 있는 기능을 적용한다. CollectionView를 만드는 편의성을 높히기 위해 RxSwift, RxCocoa를 사용 하였다 1. RxSwift, RxCocoa 라이브러리 설치 (pod) pod 'RxSwift' pod 'RxCocoa' 2. 저장공간 권한 획득 (Info.plist) NSPhotoLibraryUsageDescription This app requires access to the photo library. 3. 디바이스 이미지 가져오기 func grabPhotos(){ imageArray = [] DispatchQueue.glo..
프로젝트에 SwiftLint를 달아보자 팀단위 프로젝트 진행시 코드간의 가독성과 일관된 코드를 작성하는데 도움이 되는 일종의 코드 가이드를 잡아주는 Realm 에서 만든 SwiftLint 라이브러리를 사용 해보도록 하자. 1. SwiftLint 라이브러리 설치 (pod) pod 'SwiftLint' 2. Target -> Build Phases -> + -> New Run script Phase 2-1. Run Script 에 다음과 같이 추가한다 - 빌드시 swiftlint 가 작동하며 이제부터는 룰을 따로 추가하여 프로젝트에 맞게 진행 합니다. "${PODS_ROOT}/SwiftLint/swiftlint" 3. 기본 실행 결과 - 다음과같이 네이밍 규칙이 안맞을경우 에러를 표시해준다 4. 파일을 (파일명은 무조건 .swiftlint.yml..
SwiftUI - ViewPager 관련 기능을 달아보자 안드로이드 ViewPager 에 비해 iOS는 관련 기능을 구현하기 어려운 문제가 있다 해당 라이브러리를 이용해 간단하게 구현할수 있다. 아래의 참고 페이지 가면 정확한 내용을 알수 있지만 간략하게 정리 하였다. 1. iPages 라이브러리 모듈 설치 1-1 : 프로젝트 File -> Swift Packages -> Add Package Dependency 클릭 1-2 : 해당 Url 입력 https://github.com/benjaminsage/iPages.git 입력후 Next 클릭 benjaminsage/iPages Quickly implement swipable page views. Contribute to benjaminsage/iPages development by creating an acc..
Swift - Realm 통한 데이터 저장을 해보자 iOS, Android 내에서 사용가능한 내부 모바일전용 데이터베이스 이며 기존에서 사용중인 SQLite 보다 속도가 빠르며 많은 기업에서도 사용중인 내부 데이터베이스 기술이다. 1. Realm 라이브러리 설치 pod 'RealmSwift' * Realm 라이브러리 설치중 pod install 까지 완료 했으나 적용에 문제가 있을경우 다음 명령어를 이용해 리셋후 재 설치가 가능하다. pod cache clean Realm pod cache clean RealmSwift pod deintegrate || rm -rf Pods pod install --verbose 2. 데이터 클래스 생성 (User) import Foundation import RealmSwift class User: Object { @o..
SwiftUI - Text 관련 옵션을 달아보자 1. 기본 텍스트 달기 Text("Hello World") 2. 사이즈 조절 및 속성 달기 Text("Hello World") .font(.system(size: 30)) //사이즈조절 .underline() // 밑줄 달기 .strikethrough() // 취소선 달기 .fontWeight(.bold) // 글꼴 굵기 조절 (.bold, .medium, .regular) 등등 .frame(width: 100, height: 200) // 텍스트뷰 자체 크기 조절 .multilineTextAlignment(.leading) // 정렬 (.leading, .center, .trailing) 3. 패딩 속성 달기 Text("Hello World" .padding(10) // 전체 .padding(.all,..