목록iOS (27)
teunteun2
1. Homebrew 설치 $ brew update $ brew install swiftgen 2. SwiftGen 적용하고자 하는 프로젝트 상위 디렉토리로 이동해서 $ swiftgen config init 3. 그럼 자동으로 yml 파일이 생기고 열린다 ! -> yml 작성 input_dir: Hous-iOS-release/Resources/ output_dir: Hous-iOS-release/Resources/ xcassets: inputs: Colors.xcassets outputs: templateName: swift5 output: Generated/Colors+Generated.swift params: enumName: Colors inputs: Images.xcassets outputs: t..
오늘은 제가 Sopt 합동세미나에서 주어진 뷰를 구현하면서 배우게 된 것을 공유하려고 합니다 제가 맡은 뷰는 당근마켓의 글쓰기 뷰였는데요, 이런 화면의 경우 콘텐츠를 키보드에 가려질 위치까지 작성한다면 키보드가 위로 올라왔을 땐 ScrollView의 어딘가에 키보드 크기가 반영되어야 사용자들이 키보드에 가려진 부분도 스크롤해서 볼 수 있겠죠 ? - 순서 - 1. 키보드가 올라왔을 때, 내려갔을 때를 캐치 2. ScrollView의 contentInset 변경 1. NotificationCenter 를 통해 키보드 감지 우선 키보드가 올라왔을 때와 내려갔을 때를 감지하기 위해 특정 이벤트를 감지해서 알려주는 NotificationCenter를 viewWillAppear에 등록해주었어요 override fu..
View Reactor 그 사이에 Action stream 과 State stream 를 주고받는다 View -> (Action) -> Reactor Reactor -> (State) -> View 디자인 의도 1. Testability -> View로부터 비즈니스 로직을 분리하기 위함 2. Small 3. Less Typing -- View -- (아마 프로젝트에서는 ViewController & Cell 을 지칭할듯) - 뷰는 그저 actionStream과 stateStream을 map 할지 를 정의하는 부분 (보내고 받기만 한다는 뜻인듯) 1 뷰를 정의할 땐, 리액트킷에 정의되어 있는 View 프로토콜을 채택하면 된다. 2 View 프로토콜을 채택하면 그 클래스는 자동으로 reactor라는 프로퍼티..
CollectionView Cell 내부에 버튼이 있는 경우를 자주 볼 수 있는데요, 이 버튼의 action을 세가지 방법으로 구현해본 후 차이점을 기록해보려고 합니다 1. 버튼 태그에 IndexPath.row를 담는 방법 장점 - 뛰어난 장점은 아니지만 CollectionVIew delegate 메서드인 cellForRowAt 외부에서 @objc selector Action을 정의할 수 있어요 내부에서 액션함수를 정의하면 delegate 메서드가 무거워지니까.. 단점 - 하지만 해당 방법으로 버튼 액션을 구현할 경우 cellForRowAt 메서드 안에서 Button의 addTarget을 해야합니다 - 태그를 사용하는 방법은 추천하지 않는다고 해요 잘못하면 row가 꼬일 수 있다고 들은 .. 2. del..
사실 밑의 링크가 2편이고 해당 콘텐츠가 1편입니다. 더 뒤늦게 올리네용 https://teunteun2.tistory.com/10 [Swift] GestureRecognizer&TextKit 으로 UILabel text 클릭 이벤트 발생시키기 인스타그램 클론코딩을 하면서 'avatar1 첫번째 게시물' 부분을 하나의 UILabel로 만들어주었다. NSMutableAttributedString을 통해 폰트와 굵기 등의 스타일은 다르게 주었지만 사용자아이디를 눌렀을 때 teunteun2.tistory.com 인스타그램 클론코딩을 하면서 최대한 디테일한 부분까지 신경쓰려고 노력했는데 그 부분 중 하나가 게시물 content 부분인 것 같다. UserName과 Content 부분이 분명 하나의 Label인데 ..
저번에 UIView의 두 생성자 required init?(coder: NSCoder) & init(frame: CGRect)에 대해 정리하고, 차이점을 알아보는 포스팅 글을 썼는데 이번엔 조금 비슷하게 XIB와 같은 인터페이스 빌더를 통해 커스텀 뷰를 만들 때 사용되는 required init?(coder: NSCoder) 생성자와 awakeFromNib() 메서드 둘에 대해 정리해보고자 합니다 - ! 항상 코드로만 커스텀 뷰를 만들다가 XIB와 좀 친해지고자 ... XIB로 커스텀 네비게이션바를 만들고 (UIView로) 필요한 부분에 넣어쓰고자 했는데요, init?(coder: NSCoder) 내부에 outlet을 통해 버튼에 addTarget 을 해주고 실행하니 에러가 납니다 뭐라고 뜨느냐 ! 바로..