일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- HIG
- RxCocoa
- tableView
- Refactoring
- Observable
- 리펙터링
- rxswift
- ribs
- MVVM
- Protocol
- UITextView
- clean architecture
- ios
- uiscrollview
- Xcode
- UICollectionView
- collectionview
- map
- Human interface guide
- 애니메이션
- SWIFT
- 스위프트
- combine
- swift documentation
- 클린 코드
- swiftUI
- 리팩토링
- uitableview
- Clean Code
- 리펙토링
- Today
- Total
목록분류 전체보기 (1645)
김종권의 iOS 앱 개발 알아가기

상황 내부 크기가 동적으로 증가하는 경우 (label.text와 같은 경우), superView의 width를 동적으로 증가하여 내부 레이아웃을 유지할 수 있는 방법 값에 따라 크기가 동적으로 늘어나는 - 예시) UILabel let temporaryLabel = UILabel() temporaryLabel.font = UIFont.systemFont(ofSize: 12) temporaryLabel.text = "sampleDataString" print(temporaryLabel.intrinsicContentSize) // (101.0, 14.5) temporaryLabel.text = "sampleDataLongString ---- long ----" print(temporaryLabel.intrin..

spacing 설정 방법 균등한 경우 - storyboard에서 설정 "스택뷰 안 데이터1"과 "스택뷰 안 데이터2"사이의 간격을 30으로 하고 싶은 경우 -> stackView.setCustomSpacing(_:after) 함수 사용 @IBoutlet 준비: 스택뷰와 데이터1 space 설정 func setupView() { stackView.setCustomSpacing(30, after: lbl1) } 결과화면 데이터1과 데이터2 사이 간격이 30인 것 확인

@discardableResult 의미: 문구 그대로 결과값을 discardable(버릴 수 있는) 의미 함수의 return값을 discadable시킬 수 있다는 의미 -> return 값을 사용하지 않아도 warning 메세지를 나오지 않도록 설정 @discardableResult를 사용방법 Warning메세지: "Result of call to 'returnFunction(count:)' is unused" 해당 함수 위에다가 @discardableResult를 사용하면 warning메세지 제거

toast view를 띄우는 프레임워크 이용 커스텀 toastMessageView를 만든 후 toastView를 띄우는 프레임워크를 사용 종속성 pod 'Toast-Swift', '~> 5.0.1' import import Toast_Swift 커스텀 ToastMessageView 추가 ToastMessageView.xib ToastMessageView.swift // // ToastMessageView.swift // ToastViewEx // // Created by 김종권 on 2021/02/18. // import UIKit class ToastMessageView: UIView { @IBOutlet weak var toastMessageLabel: UILabel! override init(fra..

table View 구성 storyboard code: flashScrollIndicators()를 이용하면 우측 스크롤뷰가 표출 * 전체 소스코드: github.com/JK0369/TableView_scroll_example

Clean swift MVVM의 단점 보완: 모든 부분에서 Reactiveness가 필요하지 않음 VIPER의 단점 보완: 사용자의 액션, 모델 업데이트, 라우팅이 presenter에 몰려있음(massive) - Presenter: Interactor에서 발생되고 비지니스 로직과 관련있지만 UIkit과 관련없는 UI를 가짐 Clean Swift의 VIP 주기 VIP(View Controller, Interactor, Presenter) VIPER의 제어 흐름 문제 해결(양방향으로 로직이 순환해서 순환참조에 의한 메모리 누수): 단방향 제어 흐름 MVVM의 reactiveness 문제 해결: VIP cycle로 인해 interactor에 있는 클로저 기반 비동기 메소드들이 주기적으로 업데이트를 제공할 수 ..

Bundle이란 실행 가능한 코드와 그 코드가 사용하는 자원을 포함하고 있는 디렉토리 가지고 있는 내용 - info.plist, assets, string 파일 등 프레임워크 번들은 dynamic library에서 사용하는 코드와 자원을 포함 모든 앱 Bundle은 앱에 대한 정보가 담긴 info.plist파일을 갖음 Package란 Finder가 사용자에게 단일 파일로 보여주는 디렉토리 package는 macOS에서 디렉토리를 추상화하는 방법 중 하나 가지고 있는 내용 - .app, .playground, .plugin 등 Bundle Display Name: Bundle은 사용자에게 보여지는 이름과 실제 Bundle이 사용하는 File System의 이름을 따로 관리 - Finder에서 이름을 변경하..

* 사용되는 라이브러리 - RxSwift - RxCocoa - RxTest (RxSwift의 스트림들을 테스트 할 수 있는, 가상 시간을 함께 이벤트를 발생시킬 수 있는 프레임워크) - RxNimble (expect라는 함수로 명료하게 테스트를 할 수 있게 해주는 프레임워크) 1. 간단한 RxSwift, MVVM구조 설계 RxSwift구조 코드 참고: ios-development.tistory.com/173 2. Unit 테스트 코드 작성 1) Nimble프레임워크에서 사용 할 events함수 정의 import Foundation import RxSwift import RxTest import Nimble import RxNimble // Tests그룹 하위에, ExpectationExtensions.s..