일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- tableView
- uitableview
- collectionview
- 리펙토링
- UITextView
- ios
- MVVM
- swift documentation
- 리팩토링
- Protocol
- rxswift
- swiftUI
- Refactoring
- Human interface guide
- 클린 코드
- Xcode
- 리펙터링
- uiscrollview
- Observable
- UICollectionView
- SWIFT
- 애니메이션
- map
- 스위프트
- clean architecture
- ribs
- RxCocoa
- Clean Code
- HIG
- combine
- Today
- Total
목록iOS 응용 (swift) (724)
김종권의 iOS 앱 개발 알아가기
Zero Width Space "\u{200B}" 문자는 "zero width space"라고 불리며, 문자열은 있지만 너비의 크기가 0인 문자 ex) 두 개의 UITextField에 placeholder 텍스트를 지정하고, text 값에는 각각 ""와 "\u{200B}"를 입력한 상태 private let textField1 = { let textField = UITextField() textField.font = .systemFont(ofSize: 24, weight: .regular) textField.text = "" textField.textColor = .black textField.placeholder = "placeholder (empty spacing)" return textField..
1. lineSpacing, lineHeight 개념 (#baselineOffset) 2. 특정 문자열 사이 간격 조절 방법 (#lineSpacing 고급) 문자열 사이 간격 조절 아이디어 "ABC\n123\ndef"라는 문자열이 있을 때 ABC와 123 사이 간격을 10으로 하고, 123과 def의 간격을 30으로 하고 싶은 경우? lineSpacing은 저번 포스팅 글에서 알아본 대로 라인의 첫번째 문자열 기준으로 lineSpacing이 결정되는 개념을 이용 "ABC"의 lineSpacing을 10으로 설정, "123"의 lineSpacing을 30으로 설정 예제 ex) "ABC\ndef"에서 "ABC"와 "def"사이 간격을 30으로 만들기 적용 전) 적용 후) let text = "ABC\n123..
1. lineSpacing, lineHeight 개념 (#baselineOffset) 2. 특정 문자열 사이 간격 조절 방법 (#lineSpacing 고급) lineSpacing과 lineHeight 개념 lineSpacing: 문자열이 2줄 이상이 될 때, 이 두 줄 간격을 의미 (default는 0) lineHeight: baselineOffset으로 구현하고 문자열 1줄에 대해서 바로 적용되며, 문자열을 가지고 있는 뷰 (UILabel, UITextView, UITextField)등의 높이 cf) lineHeightMultiple 개념 lineHeightMultiple는 폰트 크기에 비례하여 height값을 늘려주는 값 ex) lineHeightMultiple이 1.2이면 font 크기의 1.2배 ..
함수로 정의 vs closure로 정의 보통 코드를 작성하다가 중복 작업이 있을 때나 로직이 여러개가 들어갈 때, 하나의 일은 하나의 함수에서 하기 위해서 별도의 함수를 정의하여 그 함수를 호출하도록 구현 하지만 이렇게 함수를 만들때, 다른곳에서는 사용하지 않고 현재 위치에서만 사용하는 경우가 존재 // 리펙토링 전 func workA() { // A work // B work
deprecated될 UIScreen.main.bounds.width 스크린 width를 구할 때 예전에는 보통 UIScreen.main.bounds를 사용 이때 UIScreen.main을 사용하려는 시점에 애플에서 경고 메시지가 노출 'main' will be deprecated in a future version of iOS: Use a UIScreen instance found through context instead: i.e, view.window.windowScene.screen 여기서 사용하라고 애플에서 권장하는 것은 view.window.windowScene.screen 라는 프로퍼티 애플에서 권장하는 view.window.windowScene.screen 이 프로퍼티는 아래처럼 접근이 가..
statusBarManager 개념 기존에 statusBar의 heigth를 구하려고 하면, statusBarFrame 이라는 기존에 있던 프로퍼티가 iOS13에서 deprecated되었다는 경고 메시지가 노출 UIApplication.shared.statusBarFrame.height 애플은 iOS13+에서 statusBar에 대한 값을 관리하는 별도의 statusBarManager를 정의 UIStatusBarManager는 class 타입 3가지의 프로퍼티가 존재 여기서 statusBarFrame을 사용하면 height구하기도 가능 statusBarManager 사용법 UIWindowScene의 instance이므로, UIWindowScnene인스턴스를 가져와서 획득 if let windowScene..
setContentOffset의 completion setContentOffset(_:animated:) 메소드에서는 completion이 존재 x class UIScrollView { open func setContentOffset(_ contentOffset: CGPoint, animated: Bool) } UIScrollViewDelegate의 scrollViewDidEndScrollingAnimation을 사용하여 구현 extension ViewController: UIScrollViewDelegate { func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) { // print("end>>") } } 이 애니메이션은 사용자가 직접..
특정 rect 영역이 포함되는지 확인 방법 진한 회색뷰이 얕은 회색뷰에 완전히 포함되는지 확인하는 방법? 오렌지색 뷰가 회색뷰에 걸쳐있는지 확인하는 방법? contains(_:) 완전히 포함되었는지 확인이 가능 extension CGRect { public func contains(_ rect2: CGRect) -> Bool } 두 개가 걸쳐져 있는지 확인 가능 extension CGRect { public func intersects(_ rect2: CGRect) -> Bool } 아래처럼 사용 containerView.frame.intersects(orangeView.frame) // true containerView.frame.contains(orangeView.frame) // false cont..