일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Clean Code
- Observable
- RxCocoa
- SWIFT
- clean architecture
- rxswift
- 리팩토링
- UITextView
- 애니메이션
- ribs
- uiscrollview
- swiftUI
- combine
- HIG
- UICollectionView
- uitableview
- 리펙토링
- ios
- map
- 스위프트
- tableView
- Xcode
- Human interface guide
- Refactoring
- MVVM
- swift documentation
- 클린 코드
- collectionview
- Protocol
- 리펙터링
- Today
- Total
목록iOS 실전 (swift)/UI 커스텀(프로그래밍적 접근) (16)
김종권의 iOS 앱 개발 알아가기
제스쳐 생성 및 등록, 6~7번라인 1 2 3 4 5 6 7 8 9 10 11 12 // ViewController.swift override func viewDidLoad() { super.viewDidLoad() /// view에 tap제서쳐 등록 let tap = UITapGestureRecognizer(target: self, action: #selector(myPrint(_:))) view.isUserInteractionEnabled = true // 없으면 동장하지 않음 view.addGestureRecognizer(tap) } @objc func myPrint(_ sender: Any) { print("tap!") }
* picker view는 table view와 인터페이스가 유사 Table View Picker View numberOfSections(in:) numberOfComponents(in:) tableView(_:numberOfRowsInSection:) pickerView(_:numberofRowsInComponent:) tableView(_:cellForRowAt:) pickerView(_:titleForRow:forComponent:) tableView(_:didSelectRowAt:) pickerView(_:didSelectRow:inComponent:) UITableViewDelegate UIPickerViewDelegate UITableViewDataSource UIPickerViewDataSo..
1. 원리 최상단 뷰는 yellow, 바로 밑의 뷰는 blue 핵심은 blue.frame = CGRect(x: -view.frame.width, y:0, width: view.frame.width, hieght: view.frame.height), 35번라인 yellow.addSubview(blue), 36번라인 2. 뷰 이동 CGAffineTransform이용 "translationX: 10" 의미는 기존의 x좌표(이동 한 좌표가 아님)를 x = x+10 하라는 의미 48번라인 주의 ※ 48라인에서 translatationX: -50이면 다음과 같은 결과 발생 * 되돌릴 경우 간편하게 .identity사용 가능 * 애니메이션 효과 삽입 UIView.animate(withDuration: delay: u..
1. Main.storyboard 제거 2. plist.info -> "Application Scene Manifest" 내부 항목의 "Storyboard Name"제거 3. info.plist파일에 있는 "Main stroyboard file base name"제거 4. SceneDelegate.swift에 코딩 - window전용 scene설정 : 20번 라인 - scene을 통해 window객체 생성 : 23번 라인 - window객체를 활성화 : 30번 라인
(위와 같이 데이터가 없는 곳에도 줄 간격이 생기므로, 이것을 제거하려면 다음 코드를 추가) self.tableView.separatorStyle = .none * table view를 custom 한다는 것 UITableViewCell을 상속받아서 custom 1. UITableCell을 상속받아서 custom - contentView.addSubview(객체)로 추가, autolayout 설정, 56~57 라인 2. UITableView객체 생성 및 초기화 1) 기존 UItableView객체에 등록할 것 : custom한 cell의 classForCoder()를 선언, 16번 라인 객체.register(CSTableCell.classForCoder(), foeCellReuseIdentifier: "m..
*storyboard적인 오토레이아웃 및 개념은 밑 링크 참고 https://ios-development.tistory.com/30?category=889410 [iOS - swift] 12. 오토 레이아웃(auto layout) 1. 오토 레이아웃 이란? - 어떤 디바이스에서라도 그에 따라 자동적으로 배치될 수 있게끔 하는 것 - 크게 pin으로 설정하는 방법과, ctrl+드래그앤드랍으로 설정 가능 - 간격을 고정으로 한 오토레이아웃 (뷰의.. ios-development.tistory.com * 실제적으로 유용하게 오토 레이아웃을 사용하는 방법은 아래 있는 글 중 "4. 쉽게 사용하는 autolayout"부분 참고 1. 오토레이아웃 기기의 화면 크기가 변해도 사용자 입장에서 뷰의 비율이 동일하게끔 보..
*사이드바의 구현 원리 : 사이드 바로 해당되는 Rear View가 앞에 나와있는 Front VIew밑에 존재, 사이드 바를 부르면 Front View를 오른쪽으로 이동시키면 밑에 있던 Rear View가 등장(눈으로 볼 땐 사이드 바가 나오는 것으로 보임) - 내부적으로 self.view.bringSubviewToFront(View) 이게 호출하여 구현 *SWRevealViewController라이브러리를 이용하여 사이드바 구현(가장 많이 사용하는 방법) 1. 라이브러리 및 기본 세팅 1) 라이브러리 다운 John-Lluch/SWRevealViewController A UIViewController subclass for presenting side view controllers inspired on ..
* 형태 - UIControl을 상속 받아서, 그곳에 UIButton 두 개와, UILabel하나 추가 - (UIControl과 UIView 둘 중 하나를 상속 받아도 가능하지만 UIControl을 상속받으면 해당 객체에서 이벤트 발생하라고 명시해 줄 수 있음 , self.sendActions(for:)이용 UIControl과 UIView클래스의 상속구조 [iOS - UI Custom] 1. UI 커스터마이징의 원리 1. 기본 용어 1) View Hierachy - view들 사이의 계층 관계가 존재 - Superview : 뷰의 계층 구조상 다른 뷰를 포함(가장 뒤에 있는 뷰) - Subview : Superview에 포함된 뷰(가장 앞에 있는 뷰) 2) 뷰의 구성 - Ro.. ios-developme..