일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MVVM
- swift documentation
- 클린 코드
- UICollectionView
- combine
- HIG
- ios
- rxswift
- Protocol
- tableView
- Human interface guide
- Clean Code
- map
- Refactoring
- 애니메이션
- Observable
- SWIFT
- uitableview
- RxCocoa
- swiftUI
- clean architecture
- ribs
- 리펙터링
- 스위프트
- 리팩토링
- 리펙토링
- UITextView
- uiscrollview
- Xcode
- collectionview
- Today
- Total
목록분류 전체보기 (1644)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dJ1gMs/btqUpaPXGAD/OXMqOr8kS7IKiP2azcZu21/img.png)
RxGesture란 기존 Gesture 객체를 Rx로 감쌓아놓은 것 종속성 pod 'RxGesture' RxGesture 사용 방법 RxGesture가 없는 경우, 일반 UIView 바인딩 let sampleView = UIView() let tapGesture = UITapGestureRecognizer() sampleView.addGestureRecognizer(tapGesture) tapGesture.addTarget(self, action: #selector(didTapView)) RxGesture 사용 let sampleView = UIView() sampleView.rx.tapGesture() .asDriver{ _ in .never() } .drive() .disposed(by: bag) 주..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dcnG8C/btqUuNyYQQW/LFOyK9ySZsHVZl8XHfOch0/img.png)
nib, xib란? nib(NeXT Interface Builder): 뷰의 layout, display등의 요소들을 object graph로 만들어서 직렬화한 파일 인터페이스 빌더에서 구성한 모든 정보는 .xib파일(XML Interface Builder)라는 파일로 저장 프로젝트 컴파일 시 바이너리파일인 .nib파일이 되는 것 * Interface Builder란? 코딩과 상반되는 개념인 그래픽 사용자 인터페이스 nib파일 앱에 nib 파일이 로드되면 Cocoa는 Xcode에서 만든 객체들의 전체 객체 그래프(뷰, 컨트롤, 셀, 메뉴, 객체 모두 포함)를 재생성 top-level객체 - 부모 객체를 가지지 않는 것들 (윈도우, 메뉴 바, 커스텀 객체) 단, Placeholder객체와 File's Ow..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1Eut4/btqUseEnXNA/xzzFUhzaTkZ7jlIJr5CKl1/img.png)
* computed property 개념: ios-development.tistory.com/298 computed property, @IBInspectable 기본 개념 computed property는 이미 메모리에 저장된 공간(변수)에 대한 계산을 통해 값 get/set하는 기능 @IBInspectable은 storyboard파일에서 attribute inspector 탭에서 접근 할 수 있게 속성을 코드로 정의하는 것 custom navigation bar 만들기 nib파일을 가지고 UIView를 만드는 커스텀 공통 함수 정의 참고: ios-development.tistory.com/311 nib 초기화 코드 구현 extension UIView { func loadViewFromNib(nib: S..
status bar 객체 접근 방법 statusBarStyle을 전역변수로 선언 변수로 선언한 후, 이 변수의 값을 수정하면 preferredStatusBarStyle 변수가 불리면서 바뀐 statusBar 속성이 적용 import UIKit class MyVC: UIViewController { var statusBarStyle: UIStatusBarStyle = .default override var preferredStatusBarStyle: UIStatusBarStyle { return statusBarStyle } func didTapBtnStatusBarChange() { statusBarStyle = .lightContent setNeedsStatusBarAppearanceUpdate() }..
WebView 쿠키 설정 방법 원리: 웹뷰 객체를 생성할 때 WKWebView(frame:configuration:), configuration에 데이터 정보(쿠키정보 넣고 그 쿠키정보가 이전에 존재하면 캐시되는 원리) 종속성 import WebKit 쿠키는 WKWebViewConfiguration()에 저장되며, WebView를 초기화 할 때 객체로 넘겨주면 cache완료 WKWebViewConfiguration 객체에 cookie(HTTPCookie객체)를 저장하는 extension 추가 - DispatchGroup 개념: Dispatch Group 활용 - 코드 실행 순서 정의부분 참고 - completion을 사용하는 이유는 async하게 접근 종료 후 completion이 실행되는 것을 보장하기..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/AbCZh/btqT8IS6T9R/0KmtiAci9I507fI6ysyIk1/img.png)
R.swift 프레임워크 사진, 문자열, Localizable과 같은 Resource에 접근할 때 key값으로 접근 가능 Assets.xcassets파일에 있는 Resource들을 코드로 접근 가능: UIImage(named: "커스텀") -> R.image.커스텀 Localizable과 같이 사용하면 컴파일 타임에 해당 문자열 키가 존재하는지 체크 가능 (만약 존재하지 않으면 컴파일에러 발생) 빌드할 때마다 R.generated.swift파일 생성 R.generated.swift파일 생성 종속성 pod 'R.swift' 빌드 시, 프레임워크를 통해 R.generated.swift파일을 생성하기 위해 Build Phases에서 Run script 생성 후에 아래와 같이 작성 "$PODS_ROOT/R.sw..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bkcI6w/btqTF2yhDce/He0qCm3U83EgXD5KJCQdSK/img.gif)
의존성 RxSwift, RxCocoa를 사용하여 편리하게 binding pod 'RxSwift' pod 'RxCocoa' UIPanGestureRecognizer() 등록 초기 코드 import UIKit import RxSwift import RxCocoa class ViewController: UIViewController { let bag = DisposeBag() @IBOutlet weak var myView: UIView! override func viewDidLoad() { super.viewDidLoad() setupInputBinding() } private func setupInputBinding() { } } binding 구현 - sender.trnslation(in:superView..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0L9oj/btqTELJ3VVp/s8m3PM23gdIB4iRv7uyUj1/img.png)
* 스크린샷 만들어주는 사이트: https://app.flycricket.com/register fastalne으로 스크린 샷 찍기 Target에 UI Test 추가 fastlane snap shot 초기화 * fastlane 설치 참고: ios-development.tistory.com/255 $ fastlnae snapshot init SnapshotHelper.swift 파일을 UITests디렉토리 하위로 이동 Xcode Scheme에 UITest 추가 새로 만든 UITest scheme에서 Executable 설정 ( None에서 실행 가능한 앱으로 설정 ) - 바꾸어주지 않으면 Caught error... 70 fastlane 에러 발생 Build탭에서 아래사항 모두 체크 - 안할 시 Caugh..