textField.rx.text 하고 subscirbe하면 옵셔널 타입으로 String? 을 받아오는데, 옵셔널 말고 String으로 받아오고 싶으면 orEmpty를 쓰자 -! @IBOutlet weak var addMemoTextField: UITextField! addMemoTextField.rx.text.subscribe { print($0) }.disposed(by: bag) addMemoTextField.rx.text.orEmpty.subscribe { print($0) }.disposed(by: bag) * 결과 next(Optional("ㅇ")) next(ㅇ) * 결과 next(Optional("") next()
네비게이션 컨트롤러의 Navigation bar를 클릭한다 - 일단 Navigation bar의 뿌연 효과를 없애주기 위해 Translucent 를 체크 해지한다 - Prefers Large Titles를 체크하고 large title text attributes를 설정한다 - title text attributes도 large title text attributes와 동일하게 설정해준다 (밑의 사진처럼 테이블 뷰가 스크롤업되면 작은 title로 나오기 때문) ================== iOS 13 부터 변화가 있습니다 ==================== https://forums.developer.apple.com/thread/122100 barTintColor not working corre..
이런 식으로 투명하게 살짝 까만 팝업을 띄우려면 어떻게 해야할까?!? 1. Popup 뷰컨트롤러를 만들어준다 2. background color를 까만색으로 하고 opacity를 조정하여 투명도를 준다 (나는 55%로 설정) ⚠️ 주의 ⚠️ 이렇게 view의 Alpha 값을 지정해서 투명하게 해줄 수 도 있지만, 알파는 뷰에 있는 모든 객체를 다 투명하게 해준다 3. 팝업을 띄우는 쪽에서 popupVC.modalPresentationStyle = .overCurrentContext 해주기 2까지만 하고 팝업을 띄우는 뷰컨트롤러쪽에서 present하면 투명도를 지정해줬지만, 까만 화면이 나온다..! modalPresentationStyle 를 설정해줘야한다..! @IBAction func showPopup..
SCNGeometry를 상속받은 친구들 중, SCNText, SCNBox, SCNSphere 를 화면에 띄워보자 : ) 일단 프로젝트를 만들면 scene에 기본으로 넣어져있는 ship.scn을 지우고 scene에 아무 것도 없게 해준다 let scene = SCNScene(named: "art.scnassets/ship.scn")! 즉 이렇게 시작한다 class ViewController: UIViewController, ARSCNViewDelegate { @IBOutlet var sceneView: ARSCNView! override func viewDidLoad() { super.viewDidLoad() // Set the view's delegate sceneView.delegate = self /..
새로운 프로젝트를 선택하고 다음과 같이 선택해주면 -! 이렇게 구성된 샘플 AR프로젝트가 생성된다 이렇게 ViewController 코드가 설정되어있다 import UIKit import SceneKit import ARKit class ViewController: UIViewController, ARSCNViewDelegate { @IBOutlet var sceneView: ARSCNView! override func viewDidLoad() { super.viewDidLoad() // Set the view's delegate sceneView.delegate = self // Show statistics such as fps and timing information sceneView.showsSta..
Swift5의 Result Type을 사용하면 비동기 API쪽 코드(데이터 받아와서 디코딩해주는..)를 간단하고 명확하게 만들 수 있다 [ 1 ] 그전에는.. 1) 옵셔널로 구분 func fetchModel(completion: @escaping (T?) -> Void) { let url = URL(string: "...")! URLSession.shared.dataTask(with: url) { data, response, error in guard let data = data else { return completion(nil) } guard let model = try? JSONDecoder().decode(T.self, from: data) else { return completion(nil) }..
Combining Operators 중 대표적인 두가지를 살펴보자 [ 1 ] withLatestFrom ObservableType extension에 가보면 public func withLatestFrom(_ second: SecondO) -> Observable { return WithLatestFrom(first: asObservable(), second: second.asObservable(), resultSelector: { $1 }) } 이렇게 구현되어있다 어떤 옵져버블 뒤에 withLatestFrom(Observable) 해주면 어떤 옵져버블의 이벤트가 발행될때마다 매개변수로 넘겨준 observable의 the latest element를 얻는다 예제를 보는 게 이해가 빠르다 --! let b..
reduce는 모든 이벤트들을 다 더한 총합을 방출하고 scan은 하나씩 더할 때마다 증가된 sum을 각각 방출한다 [ 1 ] Reduce Observable.of(1,2,3,4,5).reduce(0,accumulator: +) .subscribe(onNext: { print($0) }).disposed(by: disposeBag) // 출력값 15 [ 2 ] Scan Observable.of(1,2,3,4,5).scan(0, accumulator: +) .subscribe(onNext: { print($0) }).disposed(by: disposeBag) // 출력값 1 3 6 10 15 Reference https://rxmarbles.com
늘 헷갈리니 기록을 하자 🙂 Xcode상에서 UILabel과 같은 오브젝트를 클릭하면 다음과 같이 두개의 Priority를 설정할 수 있다 1) Hugging priority 우선순위가 높으면 내 크기 유지. 우선순위 낮으면 크기 늘어남 (늘어난다 = 당겨진다 = 커진다) 2) Compression Resistance priority 우선순위가 높으면 내 크기 유지. 우선순위 낮으면 크기 작아짐 (밀린다 = 찌그러진다 = 작아진다) 두 오브젝트 중 하나가 커져야하는 상황 -> Hugging priority 쓰고 두 오브젝트 중 하나가 작아져야하는 상황 -> Resistance priority 쓴다 (밑에서 자세하게 설명--!)[ 1 ] Hugging priority 두 개의 UILabel로 두 prior..
- Total
- Today
- Yesterday
- Watch App for iOS App vs Watch App
- Django FCM
- PencilKit
- Python Type Hint
- Flutter Clipboard
- ribs
- flutter dynamic link
- cocoapod
- flutter build mode
- Flutter Text Gradient
- github actions
- 플러터 얼럿
- flutter deep link
- ipad multitasking
- Dart Factory
- 장고 Custom Management Command
- drf custom error
- Flutter 로딩
- Django Heroku Scheduler
- 장고 URL querystring
- METAL
- Flutter Spacer
- flutter 앱 출시
- Sketch 누끼
- Flutter getter setter
- 구글 Geocoding API
- 플러터 싱글톤
- Django Firebase Cloud Messaging
- SerializerMethodField
- DRF APIException
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |