일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Protocol
- swift documentation
- swiftUI
- UITextView
- 리펙토링
- uiscrollview
- 리팩토링
- clean architecture
- collectionview
- RxCocoa
- Clean Code
- HIG
- tableView
- SWIFT
- combine
- Refactoring
- Observable
- 애니메이션
- Human interface guide
- ribs
- 리펙터링
- rxswift
- UICollectionView
- ios
- 클린 코드
- 스위프트
- map
- MVVM
- uitableview
- Xcode
- Today
- Total
목록iOS 기본 (swift) (149)
김종권의 iOS 앱 개발 알아가기
기능상 동일하며 bounds에 맞추어서, 내부 view요소가 잘릴것인지 설정 cornerRadius를 60으로 주고 글씨가 잘리는지 확인 myView.layer.cornerRadius = 60 true로 줄 경우 잘림 view.clipsToBounds = true // 또는 view.layer.masksToBounds = true false로 줄 경우 잘리지 않음 (default값) view.clipsToBounds = false // 또는 view.layer.masksToBounds = false 사용) 내부 뷰를 밖으로 튀어나오지 않게 하려면 true로 설정하여 사용하는것이 안전
init(frame: CGRect) Interface Builder에서 쓰이지 않고, 코딩으로 UIView를 상속받은 클래스를 만들 때 사용 ex) let sampleButton = UIButton(frame: CGRect(x:3, y:4, width:5, height:6)) required init?(coder aDecoder: NSCoder) Interface Builder에서 생성되는 초기화 구문 View나 Button과 같은 것을 커스텀하는 경우, 위 두 가지의 초기화 구문이 필수 class MyCustomView: UIView { @IBOutlet weak var mainTitle: UILabel! @IBOutlet weak var subTitle: UILabel! override init(fr..
selected는 말 그대로 "선택된 상태"를 의미 (잠깐 있다가 사라지는게 아닌, 선택된 채로 남아 있는 상태) highlighted는 (터치 한 경우, "강조"되는 잠깐의 애니메이션)
textField: 수정 전의 textField객체 range: 수정 될 범위 정보 range.location: 현재 커서 위치 range.length: 삭제된 문자 갯수 EX) "1234"에서 "12"로 변경 -> range: {2, 2} "현재 커서 위치는 2, 문자열에서 수정된 길이는 2개" "123456"에서 "123"으로 변경 -> range: {3,3} "123"에서 "1234"로 변경 -> range: {3, 0} func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { // 현재: "123" // 입력: "1234" let ..
viewController.presentingViewController vs viewController.presentedViewController PresentingViewController '나'를 부르고 있는 viewController PresentedViewController '내가' 부르고 있는 viewController 사용 예시 func dismiss(viewController: UIViewController) { if presentedViewController === viewController { dismiss(animated: true) } } * 암기 방법: 시제의 '반대' presented: 과거지만, 최근에 불려진 대상을 지칭 presenting: 미래지만, 불려진 대상을 지칭
Singleton사용방법 static let으로 자기 자신을 선언 private init() {}코드가 없다면, static let을 사용할 때마다 객체가 매번 생성되므로 private init선언 class Singleton { static let shared = Singleton() private init() {} } 전역변수를 사용하여 인스턴스를 사용하게 되면, 사용 시점에 초기화가 되는 장점 GCD의 dispatch_once도 자동 적용되어 인스턴스 생성 (thread safe)
For문을 사용하되, 특정 조건인 경우를 확인할 때 사용 where없이 사용 for data in dataSource { if data.name == "jake" { print(jake existed) return } } where있이 사용: if문이 없어지고 더욱 간결 for data in dataSource where data.name == "jake" { print(jake existed) return }
Modal이란? 다른 화면을 띄워서 시선을 끌게 만드는 방식 딱 눈에 들어와야 하는 컨텐츠를 담는데 사용 사용: ViewController객체.present(객체) Modal의 스타일에는 presentation과 Transition이 존재 둘 다, 이동시키는 ViewController가 아닌, 이동되는 ViewController의 속성값으로 지정 아래 storyboard에서 실습 presentation style 속성으로 지정 : "modalPresenationStyle = . " 전체 화면 덮는 경우: modalPresenationStyle = .fullScreen현재 뷰에 대응하여 새로운 뷰를 보여주는 방식: present를 호출하는 화면의 크기와 동일한 화면크기로 불려지는 경우: modalPrese..