
Publisher Protocol public protocol Publisher { associatedtype Output associatedtype Failure : Error } ✔️ 말 그대로 Publish(발행)하는 프로토콜. Subscriber의 instance에게 elements를 전달. ✔️ Publisher의 associated types인 Output, Failure는 -> Subscriber의 associated types인 Input, Failure과 매치됨 ✔️ Publisher는 subscriber를 받아들이기 위해 receive(subscriber:)를 함(Publisher와 Subscriber가 연결되는 행위). ✔️ 그래야 Publisher가 발행 하는 값을 Subscribe..

오늘은 horizontal scrollView 2번째 입니다!지난 번에 굳이 이미지뷰를 3개 만들어 번거로웠더랬져?오늘은 배열에서 불러오도록 해볼게요. 일단 기본 레이아웃은 숨겨둘게요.더보기1. horizontal 방향이니까 contentView의 edges는 scrollView의 contentLayoutGuide에, height는 frameLayoutGuide에 맞출 것2. 사진을 3장 넣을 거라서 width의 UIScreen의 width의 3배3. scrollView의 view와 똑같이 맞춰도 되지만, 인스타 느낌처럼 조금 작게 해봄import UIKitimport SnapKitclass SecondHorizontalViewController: UIViewController { let scrol..

vertical scrollView에 이어 horizontal scrollView도 만들어볼게욧! 오늘도 뭉치 모델이 고생해주었습니당. 지난 번에 만들어놓은 vertical 버튼과 horizontal 버튼 중 horizontal 버튼을 누르면 나오도록 해볼게욧 버튼 있는 뷰컨의 코드는 숨겨놓슴돠 더보기 import UIKit import SnapKit class ViewController : UIViewController { let verticalButton = UIButton() let horizontalButton = UIButton() override func viewDidLoad() { super.viewDidLoad() setUI() setDetail() } @objc func verticalB..

Vertical ScrollView는 지난 번에 만들어 보았는데요. 이번에는 야매(?) 세로 스크롤뷰(vertical scrollview)를 만들어보려구요. 보통 세로 스크롤뷰는 뷰보다 큰 내용을 담을 때 사용하잖아여? 근데 가끔은 내용이 많지 않을 때도 스크롤뷰가 필요할 경우가 있습니다. (또는 요구당할 경우) 예를 들어서 아래와 같이 말이져! (지난 번 스크롤뷰 재활용 ㅋㅋㅋㅋ 하단에 버튼을 누르면 연결되게 해놨어요 ㅎㅎ) 스크롤이 없는 것보다는 있는 게 훨씬 유저에게 친숙하기도 하고, 완성된 느낌을 주는 것 같긴 합니당. 그래서 버튼 재활용을 통해 저 화면을 만들어볼게욧! 엄청 간단하답니다! 일단 기본 코드는 숨겨둘게요! 지난 번 코드에 버튼에 액션만 주었답니당! 더보기 import UIKit im..

일하는 중에 스크롤뷰에 이미지뷰를 담아서 스와이프로 넘기는 작업을 했어야 했는데요. (인스타그램처럼) 스크롤뷰 간단하게 생각했는데? 너? 그래서 정리해보는 세로 스크롤뷰(vertical scrollview), 가로 스크롤뷰(horizontal scrollview) 게시글이 되겠습니다요. 일단 간단하게 ViewController에 NavigationController를 embed하고, ViewController에 버튼 두개를 만드는 것으로 시작할게요. (귀찮아서 그냥 스토리보드 남기고 작업했어요 헤헿) (레이아웃은 스냅킷을 사용했어영) 더보기 import UIKit import SnapKit class ViewController : UIViewController { let verticalButton = U..

SwiftLint란? 표준이라고 할 수 있는 코딩 스타일 등을 모아놓은 가이드라인에 따라 코드를 작성할 수 있게 도와주는 도구 스위프트 스타일 및 컨벤션을 강제함으로써 코드에 통일성을 줄 수 있기 때문에 협업에 자주 사용됨 설치 방법 (brew 이용) 1. brew를 통한 설치 : 커맨드라인에서 작업 brew install swiftlint 2. SwiftLint를 설치하고자 하는 프로젝트 열기 (1) 해당 프로젝트를 누르고(2) Target에서 해당 프로젝트를 누르고(3) Build Phases 항목에서(4) + 버튼을 눌러줌(5) New Run Script Phase 3. shell 부분을 수정해주기 export PATH="$PATH:/opt/homebrew/bin" if which swiftlint..

앞으로 하나씩 작은 앱을 만들어보기로 했는데여! 오늘은 명언 만들기 앱입니당. 오늘의 명언 버튼을 누르면 랜덤으로 초록색 뷰 안에 명언과 작가가 나오는 간단한 예제임돠ㅎㅎ 오늘도 기본 UI를 잡는 코드는 숨겨둘게요! 더보기 class ViewController: UIViewController{ let mainLbl = UILabel() // "명언 생성기" let myView = UIView() // 연두색 배경화면 let quoteLbl = UILabel() // 명언 let personLbl = UILabel() // 작가 let randomBtn = UIButton() // "오늘의 명언"버튼 (랜덤 버튼) override func viewDidLoad() { super.viewDidLoad() c..

지난 번에 UserDefaults에 값을 셋팅하고, 불러오는 간단한 메서드를 알아보았는데여? 오늘은 간단하게 UserDefaults를 통해 저장한 값을 테이블뷰로 불러오도록 해보려구요. (다른 공부 안했다고 말 모대,,,ㅎ) 우선 아주 간단한 프로젝트를 하나 만들어줄게요. 추가 버튼을 누르면 alert 창이 뜨고, 거기에 추가한 textField가 테이블뷰에 보여지는 고런 간단한? (운동하기에서 제법 망설인 편,,ㅎ) 기본 코드는 접어둘게요!!⭐️ 더보기 import UIKit class ViewController: UIViewController { let tableView = UITableView() let addBtn = UIButton() var itemArray: [String] = [] over..
- Total
- Today
- Yesterday