일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리펙터링
- uitableview
- swift documentation
- collectionview
- 리펙토링
- MVVM
- SWIFT
- Protocol
- UITextView
- rxswift
- Clean Code
- Refactoring
- Xcode
- tableView
- ios
- map
- combine
- ribs
- UICollectionView
- Human interface guide
- RxCocoa
- clean architecture
- HIG
- 클린 코드
- 애니메이션
- 스위프트
- swiftUI
- 리팩토링
- Observable
- uiscrollview
- Today
- Total
목록SWIFT (948)
김종권의 iOS 앱 개발 알아가기
진동 효과 (CoreHaptics)햅틱을 0.5초 주기로 1초 진동을 3번 순차적으로 주고 싶은 경우? -> CoreHaptics를 사용단순히 한 두번의 햅틱 반응을 주고 싶은 경우는 UIImpactFeedbackGenerator, UINotificationFeedbackGenerator 글 참고AudioToolbox라는 것을 사용하여 진동 효과를 줄 수 있는데, CoreHaptics가 가장 정교하게 진동 세팅이 가능CoreHapcits는 iOS 13부터 제공하며 햅틱의 패턴들을 정교하게 만들어 낼 수 있는 기능사용 방법importimport CoreHapticsenum을 사용하여 햅틱의 종류 설정enum HapticCategory { case a case b}a진동은 여러번 주는 진동으로하고..
DispatchQueue 작업 취소, 예약 방법5초 후에 특정 작업을 수행하고 싶은 경우?보통은 DispatchQueue 사용DispatchQueue.main.asyncAfter(deadline: .now() + 5) { // some task...}5초 후에 특정 작업을 수행하려고 하지만, 중간에 버튼을 누르면 이 작업을 취소하고 싶은 경우?DispatchSourceTimer 사용DispatchSourceTimer 개념타이머를 설정해놓고 특정 작업을 setEventHandler 클로저로 실행시킬 수 있는 기능이것을 사용하면 작업을 등록해놓고 cancel, pause 모두 다 가능DispatchSourceTimer 사용 방법인스턴스 하나를 두고 cancel(), pause()할 수 있도록 전역으로 ..
UIScreenEdgePanGestureRecognizer 개념 edge pan이라는 이름에서도 볼 수 있듯이 아이폰의 가장장리 부분으로부터 안쪽으로 드래그하면 동작하는 제스쳐이 인스턴스의 프로퍼티 중 알아야 하는 것은 edgesedges: 드래그의 시작점 (top, left, bottom, right, all)let edgePanGesture = UIScreenEdgePanGestureRecognizer(target: self, action: #selector(handleEdgePan(_:)))edgePanGesture.edges = .leftview.addGestureRecognizer(edgePanGesture)ex) edgePanGesture를 등록하여 왼쪽에서 오른쪽으로 드래그하면 뷰의 배경색상..
flag 관리하는 방법유사한 성격의 flag를 관리할때 보통 아래처럼 작성ex) 앱 유저 세팅에 관한 플래그를 관리하는 클래스class UserSettings { var isDarkModeEnabled: Bool var isNotificationsEnabled: Bool var isLocationServicesEnabled: Bool var isAutoUpdateEnabled: Bool var isPrivacyModeEnabled: Bool var isSoundEnabled: Bool var isVibrationEnabled: Bool var isEmailUpdatesEnabled: Bool var isTwoFactorAuthenticationEnabled..
OptionSet 개념OptionSet은 옵션이 있는 Set 자료구조이며, 옵션들을 마치 enum-case처럼 다룰 수 있고 set의 대표적인 연산자 insert, remove, contains, intersection 를 쓸 수 있는 자료구조ex) UserSetting에 관한 플래그를 관리하는 OptionSetstruct UserSettingsFlags: OptionSet { let rawValue: Int static let darkMode = UserSettingsFlags(rawValue: 1 OptionSet에서 rawValue를 bit로 표현하는 이유?일반적으로 OptionSete에서는 rawValue를 보면 모두 shift연산자를 통해 표현stat..
네비게이션 블러 효과구현 아이디어먼저 navigationBar를 투명하게하고(isTranslucent = true), 색상을 clear로 설정네비게이션바에 addSubview하여 blur 뷰를 삽입blur뷰는 UIBlurEffect와 UIVisualEffectView를 사용하면 편하게 블러효과를 줄 수 있음구현 방법먼저 navigationBar를 투명하게하고(isTranslucent = true), 색상을 clear로 설정UINavigationBar.appearance().setBackgroundImage(UIImage(), for: UIBarMetrics.default)UINavigationBar.appearance().shadowImage = UIImage()UINavigationBar.appeara..
붙여넣기 권한 팝업iOS 16.0부터 OS에서 제공개발자가 UIPasteboard.general.string과 같이 복사된 텍스트를 불러올 때 팝업이 등장팝업이 나오는 이유: 사용자 동의 없이 복사된 텍스트에 접근하지 못하도록 하기 위함단, TextField에서 long press하여 붙여넣기 할때는, 암묵적으로 사용자가 동의한 것으로 간주하기 때문에 위 팝업이 등장 x아래에서 살펴볼 설정 앱에서 붙여넣기 권한을 거부 할 수 있는데, 거부하더라도 사용자가 long press하여 붙여넣기하는 것은 허용됨팝업 옵션에 따른 동작붙여넣기 허용 안 함 -> UIPasteboard.general.string 값이 nil붙여넣기 허용 -> UIPasteboard.general.string으로 pasteboard에 복..
문자열에 이미지 넣는 방법NSTextAttachment 사용NSAttributedString에 attachment를 가지고 초기화할 수 있는데, 이 때 attachemnt에 이미지를 넣어서 이 것을 사용하면 텍스트에 붙이기가 가능1. NSTextAttachment에 image, 크기를 입력2. NSAttributedString에 위 attachment를 가지고 초기화3. 위 NSAttributedString을 또 다른 문자열로 구성된 NSAttributedString에 append하면 합치기직접 구현해보기1. NSTextAttachment에 image, 크기를 입력height를 50으로할때 이 비율을 기준으로 width도 정해지게끔 처리let imageAttachment = NSTextAttachmen..