일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스위프트
- 클린 코드
- HIG
- combine
- tableView
- 리팩토링
- SWIFT
- swift documentation
- uiscrollview
- Xcode
- Refactoring
- collectionview
- Clean Code
- rxswift
- map
- UITextView
- UICollectionView
- Observable
- 애니메이션
- Human interface guide
- Protocol
- ios
- clean architecture
- 리펙토링
- swiftUI
- ribs
- RxCocoa
- 리펙터링
- uitableview
- MVVM
- Today
- Total
목록iOS 응용 (swift) (724)
김종권의 iOS 앱 개발 알아가기
adjustsImageWhenHighlighted 개념 iOS 16에서 deprecated되었지만, 해당 옵션 사용하면 적용됨 UIButton에 이미지를 set해주고 탭하 면 아래처럼 dimmed효과가 적용되는데 adjustsImageWhenHighlighted 옵션이 디폴트 true로 잡혀있기 때문 private let button = { let button = UIButton() let image = UIImage(named: "circleButton") button.setImage(image, for: .normal) button.addTarget(self, action: #selector(handleDidTapButton), for: .touchUpInside) button.translatesAu..
* 업데이트 된 최신글: https://ios-development.tistory.com/1565 UITextView 입력 중 위로 스크롤 되는 현상 UIStackView를 사용하여 리스트 형태의 뷰를 보여줄 때 중간에 UITextView가 있다면 버그가 발생 뷰형태: UIScrollView안에 UIStackView을 넣고, 이 스택뷰에 UITextView 넣어서 리스트 형태의 뷰를 만든 형태 ex) 뷰 형태 import UIKit class ViewController: UIViewController { private let scrollView = { let v = UIScrollView() v.translatesAutoresizingMaskIntoConstraints = false return v }(..
UITextInputDelegate 개념 텍스트 입력에 대한 델리게이트 UITextView와 UITextField가 가지고 있는 delegate iOS 3.2+에서 제공 코드로는 inputDelegate로 접근 selectionWillChange: textFIeld나 textView 글자를 눌러서 선택했을때 바로 직전 호출 selectionDidChange: textFIeld나 textView 글자를 눌러서 선택하거나 드래그했을때 selected range값이 업데이트된 후 호출 주의) text 자체가 change되는 이벤트들은 문서와는 다르게 실제로 코딩해보면 호출 x textWillChnage: text가 변경되기 직전 호출 textDidChnage: text가 변경되고난 후 호출 textField...
iOS 17 textViewDidChangeSelection 버그 iOS17 이전까지는 델리게이트에서 selection range가 변경되면 textView.selectedRange값이 실시간으로 변경해주었지만, iOS17 부터는 사용자가 드래그를 놓았을때만 호출됨 심지어 textView.selectedRange값을 계속 print해보아도 cursor를 놓았을때만 변경되는 버그가 존재 extension ViewController: UITextViewDelegate { func textViewDidChangeSelection(_ textView: UITextView) { print("range>", textView.selectedRange) } } 실시간으로 cursor 위치 파악하는 방법 selectio..
didMoveToWindow() 메서드 UIView 클래스의 라이프사이클 메서드 해당 뷰를 가지고 있던 window 객체가 변경되었다는 의미 해당 뷰가 윈도우에 추가되거나 윈도우에서 제거될 때 호출 present나 push를 통해서 UIViewController안에 UIView를 노출시키는데, 이 때 UIView 내부의 didMoveToWIndow() 메서드가 호출 didMoveToWindow() 활용 이 메서드를 override하여 print해보면 이 뷰를 가지고 있는 VC가 present될때 한번 호출되고 dismiss될때 한번 호출 class SomeView: UIView { init() { super.init(frame: .zero) backgroundColor = .gray.withAlphaCo..
1. touch indicator 구현 방법 - 기초 개념 sendEvent(_:), UIEvent (allTouches, UITouch, phase) 2. touch indicator 구현 방법 - DebugTouchesWindow, Touch Indicator 구현 아이디어 window의 sendEvent에서 touch view를 삽입 sendEvent 메서드 인자로 들어오는 event의 phase를 보면 began, ended를 알 수 있기 때문에 began에서 뷰를 넣어주고, ended에서 뷰를 삭제 커스텀 Window 구현 UIWindow 상속하여 커스텀 윈도우 구현 open class TouchesWindow: UIWindow { } 필요한 property와 sendEvent 선언 public..
1. touch indicator 구현 방법 - 기초 개념 sendEvent(_:), UIEvent (allTouches, UITouch, phase) 2. touch indicator 구현 방법 - DebugTouchesWindow, Touch Indicator 이벤트 처리 방식 터치 이벤트가 발생하면 UIApplicationDelegate부터 시작하여 터치된 뷰를 탐색 주의) 애플에서 보여주는 이미지는 아래처럼 되어있어서 얼핏 터치 이벤트 전달 과정이 가장 위에 깔린 뷰부터라고 오해할 수 있지만 잘못된 개념 실제로는 UIWindow가 먼저 받아서 이 위에 깔린 뷰에게 전달하고 위에 깔린 뷰에 responder 탐색하는것 ex) 아래에서 알아볼 UIWindow의 sendEvent가 가장 먼저 호출되고 ..
1. 이미지 처리 - heic, heif 개념 2. 이미지 처리 - 회전 각도 메타 정보, 이미지 메타 다이터, imageOrientation (exif) 3. 이미지 처리 - 이미지 회전 메타 정보 제거 방법 (UIGraphics, CurrentImageContext) 안전한 이미지 처리 방법 (저번시간에 알아본 내용) * 아래 내용에 대한 구체적인 내용은 이전 포스팅 글 참고 EXIF 정보나 imageOrientation 정보가 다르고, 이미지를 이미지 서버에 업로드할 때 애초에 imageOrientation 정보를 제거하면 서로 혼돈이 없는 상태로 관리가 가능 아이폰 앨범에서 이미지 회전 메타 정보가 이미 적용된 결과를 보여주기 때문에, swift에서 사용할 때 메타 정보를 제거하고난 후 이미지 서..