일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Swift
- Archive
- darkmode
- view
- 웹뷰
- error
- 한글
- Notification
- window
- MacOS
- Session
- appstore
- SwiftUI
- Realm
- Xcode
- github
- Firebase
- geofencing
- 개발자
- Apple
- JPA
- IOS
- rxswift
- FLUTTER
- mac
- Code
- Git
- stack
- iOS16
- UIButton
- Today
- Total
목록IOS (174)
EEYatHo 앱 깎는 이야기
HapticEngine 으로 진동을 구현했었다. 구현 포스팅 그런데 백그라운드로 갔다가 포그라운드로 돌아온 후, 진동을 켜면 com.apple.CoreHaptics Code=-4805 에러가 발생했다. CHHapticError 정의 를 보니, 엔진이 켜져있지 않다고 한다. Solution HapticEngine 은 앱이 백그라운드 상태로 가면 꺼진다. 따라서 포그라운드 진입시, HapticEngine 을 다시 start 시켜 해결했다. /// in AppDelegate override func applicationWillEnterForeground(_ application: UIApplication) { do { try VibrationManager.shared?.hapticEngine.start() }..
CHHapticEngine iOS 에서 제공하는 CHHapticEngine 을 이용하여 다양한 진동을 구현할 수 있다. 보다 자세한 설명을 원한다면 공식 링크에서 확인하기. CHHapticEngine 링크 큰 개념은, HapticEngine 에 진동 Pattern 을 넣어서 Player 를 생성한다. Player 를 start 및 stop 한다. CHHapticPattern HapticPattern 에는 지속시간과 세기가 있으며, 세기에는 강도(hapticIntensity) 와 날카로움(hapticSharpness) 이 있다. 강도는 클수록 묵직한 느낌이다. 내 생각엔 진폭을 담당한다. 날카로움은 클수록 따가운(?) 느낌이다. 내 생각엔 진동수를 담당한다. 애플에서 제공하는 예시 프로젝트를 실행해보면 직..
React Native 에서 Objective-C 코드를 호출하는 공식 설명이 좀 난잡해서 정리한다. RN Objective-C 코드 호출 공식 설명 글 구현 방법 요약 RCTCalendarModule.h 파일 생성 및 코드 입력 RCTCalendarModule.m 파일 생성 및 코드 입력 App.js 코드 수정 실행 및 확인 RCTCalendarModule.h RN 프로젝트의 iOS 프로젝트에 RCTCalendarModule.h 를 만든다. RCTCalendarModule 의 Calendar 은 공식 설명글에서 네이티브의 캘린더 기능 호출하고자 해서 붙혀진 이름이다. RCT 는 React 의 약어이다. 모듈 이름은 원하는 대로 수정해도 된다 ( ex. RCTSwiftModule, RCTVibration..
Dynamic Image 런타임에서 다크모드, 라이트모드 변경에 대응하는 다이나믹 이미지 ( Dynamic Image ) 가 있다. ( Dynamic Color 처럼 ) 다이나믹 이미지는 AssetCatalog 나 Code 로 생성할 수 있다. 1. AssetCatalog 로 Dynamic Image 생성하기 UIImage(named: "MyImageName") 2. Code 로 Dynamic Color 생성하기 UIImage 에게 추가 작업 ( resize 등 ) 을 하게되면, 코드로 생성하는게 필요해진다. func dynamicImage(lightImage: UIImage, darkImage: UIImage) -> UIImage { let darkTC = UITraitCollection(traitsF..
iOS16 에서 특정 조건을 만족하는 케이스에서 present 시 UI 가 깨진다. 버그 조건 설명 iOS16 디바이스의 orientation 과, 앱에서 인지하는 orientation 이 다른 상황 modalPresentStyle 이 pageSheet 와 formSheet 가 아닌 viewController 를 present 구현 영상 with gif iOS16 시뮬레이터에서, 디바이스의 방향은 potraits, 앱의 방향은 landscape 로 바꾼 뒤, ( 그 반대도 버그가 발생한다. ) modalPresentStyle 을 overFullScreen 으로 present 하는 gif 이다. 앱의 orientation 를 무시하고 디바이스의 orientation 에 맞게 present 되어버린다. ho..
줄바꿈을 어떻게 구현해야할지 고려하지 않고 손쉽게 이미지를 텍스트 옆에 넣을 수 있다. attributedString 에 이미지를 넣는 것이다. 구현 ( with extension ) extension NSMutableAttributedString { func appendImage(image: UIImage, bounds: CGRect) { let imageAttachment = NSTextAttachment() imageAttachment.image = image imageAttachment.bounds = bounds self.append(NSAttributedString(attachment: imageAttachment)) } func insertImage(image: UIImage, bounds:..
에러 내용 Archive 후, appstore upload를 진행할 때 발생. Asset validation failed Invalid Pre-Release Train. The train version '15.1.1' is closed for new build submissions (ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) Asset validation failed This bundle is invalid. The value for key CFBundleShortVersionString [15.1.1] in the Info.plist file must contain a higher version than that of the previously approved versi..
Scene의 화면회전 제어 로직이 변경되면서, 기존에 사용하던 UIDevice 방식은 deprecated 되었다. // is deprecated let value = UIInterfaceOrientation.landscapeRight.rawValue UIDevice.current.setValue(value, forKey: "orientation") 해당 방식으로 강제 화면 회전시, 친절하게 아래와 같은 에러가 발생한다. ( UIWindowScene.requestGeometryUpdate 를 사용해달라는 말. ) 새로 사용해야 될 함수 : 적용 코드 : /// 화면 가로로 바꾸기 if #available(iOS 16.0, *) { let windowScene = UIApplication.shared.con..