일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- map
- UICollectionView
- Xcode
- 리펙토링
- Observable
- Refactoring
- ios
- combine
- 리펙터링
- swift documentation
- swiftUI
- uiscrollview
- UITextView
- clean architecture
- Protocol
- 클린 코드
- SWIFT
- uitableview
- collectionview
- 스위프트
- RxCocoa
- 리팩토링
- MVVM
- ribs
- 애니메이션
- Clean Code
- Human interface guide
- tableView
- rxswift
- HIG
- Today
- Total
목록iOS 응용 (swift) (724)
김종권의 iOS 앱 개발 알아가기
디스플레이 확대/축소 옵션아이폰에서 Text의 크기도 동적으로 변하지만 Text가 아닌 디스플레이 자체를 확대하고 축소할 수 있는 옵션이 존재위치: 설정 > 디스플레이 및 밝기 > 디스플레이 확대/축소디스플레이 확대/축소 기능디스플레이의 해상도의 비율은 UIScreen.main.scale로 알 수 있지만, 확대/축소했을때의 해상도는 UIScreen.main.nativeScale로 파악이 가능ex) 디스플레이 확대/축소에서 기본으로 둔 경우확대 옵션으로 킨 경우결과)비교)기본확대확대하면 비율이 0.65625%p 증가되었으므로 약 22%가 증가됨때문에 이 확대된 해상도를 고려하여 애니메이션이나 특정한 크기에 관한 대응이 필요한 경우 scale을 nativeScale로 나눈 비율 값을 곱하여 대응이 가능전체..
진동 효과 (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에 복..