iOS
-
이미지 포맷 요약 - 비트맵, 벡터 방식 / 손실 압축, 무손실 압축 / JPG, GIF, PNG, SVGiOS 2023. 2. 9. 15:40
비트맵/벡터 방식 손실/무손실 압축 포맷 특징 JPG(JPEG) 비트맵 손실 압축시 용량 줄일 수 있음 GIF 비트맵 무손실 색이 적어 품질 떨어질 수 있음 PNG 비트맵 무손실 투명도 표현 가능, 용량이 큼 SVG 벡터 무손실 확대,축소시 깨짐 없음, 애니메이션 가능 비트맵 방식 작은 픽셀이 모여 이미지를 만드는 형태. 확대하면 깨져보임 ex) JPG, GIF, PNG 벡터 방식 점과 선으로 이미지를 만드는 형태. 확대해도 깨지지 않음 ex) SVG 손실 압축 말 그대로 압축시 이미지 품질이 떨어지는 압축 방식 ex) JPG 무손실 압축 압축시 이미지 품질 손실이 없음 ex) GIF, PNG, SVG JPG(JPEG) 손실 압축 포맷 압축시 용량 줄일 수 있음 비트맵 방식 GIF 무손실 압축 포맷 색상..
-
PHCachingImageManager requestImage 이미지 중복 SWIFT TASK CONTINUATION MISUSEiOS 2023. 2. 7. 19:17
PHCachingImageManager.default().requestImage PHAsset 에서 이미지를 가져올 때 해당 메서드를 사용합니다. 무심코 아래와 같이 option 없이 사용할 수 있는데요 PHCachingImageManager.default().requestImage(for: asset, targetSize: PHImageManagerMaximumSize, contentMode: .aspectFit, options: nil) { image, info in if let image = image { continuation.resume(returning: image) } } 이럴 때 주의해야 할 점이 있습니다. 이 함수는 기본적으로 비동기적으로 동작합니다. 비동기적으로 사용했을 때 Photos..
-
[iOS] 이미지 권한 얻기iOS 2023. 2. 3. 10:35
iOS에서 사용자의 이미지를 가져오려면 권한이 필요합니다. Info.plist 에 아래 권한을 추가해주면 사용자의 사진에 접근하려고 할 때 권한을 요청합니다. (Privacy - Photo Library Additions Usage Description 이 아닙니다. =_= 혹 추가해도 안 되면 잘못 넣은 건 아닌지 확인해보시길..) 아래 방법으로 명시적으로 권한을 확인할 수도 있습니다. 한번 거부했다면 사용자가 설정에 들어가서 바꿔줘야 하므로 권한에 따라 추가 작업을 해줄 수 있습니다. PHPhotoLibrary.requestAuthorization(for: .readWrite) { [weak self] state in switch state { case .authorized: ... } } PH 코드..
-
decode vs decodeIfPresentiOS 2022. 12. 14. 16:01
Codable 이후 필드명이나 코딩키만으로 직접 디코딩없이 파싱이 가능해졌지만, 그럼에도 별도의 처리가 필요하다면 여전히 디코더를 통한 생성자를 만들어줘야 할 때가 있습니다. 이때 필요한 decode 와 decodeIfPresent 의 차이는 "해당 필드가 존재하냐" 의 여부로 관점으로 생각해볼 수 있습니다. 다음 JSON 을 파싱하려고 할 때, { title: "woongs", subtitle: "decoding" } 다음과 같이 만들어볼 수 있습니다. 아직 딱히 문제는 없습니다. required init(from: decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) self.title = t..
-
[iOS] APNs 를 통한 Push 알림 이해하기iOS 2022. 12. 7. 16:04
오늘은 개개인이 갖고 있는 아이폰 디바이스에 푸시 알림이 오는 과정에 대해 알아보려고 합니다. 앱 개발자의 관점에서 살펴봅니다 :) 먼저 푸시가 전송되는 큰 흐름을 간략하게 보고 블라인드로 남아있는 부분을 하나씩 알아보겠습니다. 흐름 이해하기 개별 디바이스에 직접적으로 푸시 알림을 보낼 수 있는 주체는 오직 APNs 뿐입니다. APNs 란 Apple Push Notification server 의 약자로 즉 애플만이 직접적으로 디바이스에 푸시 알림을 보낼 수 있습니다. 따라서 저희는 APNs 에게 우리 앱에 푸시를 보내줘! 라고 요청해야 합니다. 이 요청이 유효한지 보고 APNs 가 푸시를 보낼지 말지를 판단합니다. 이 요청 또한 정해진 규격에 맞게 APNs 와 연결한 후에 가능하고, 이를 위해 APNs..
-
Xcode 여러 버전 설치 후 git 문제iOS 2022. 5. 13. 14:16
아래와 같은 에러가 나온다면, git에서 제대로 된 Xcode 경로를 찾지못해 발생하는 에러입니다. xcrun: error: active developer path ("/Users/~~~/Xcode13.2.app/Contents/Developer") does not exist Use `sudo xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools, or use `xcode-select --install` to install the standalone command line developer tools. See `man xcode-select` for m..
-
UITextField clear button customiOS 2021. 10. 16. 23:48
UITextField 에서는 기본적으로 clear 버튼을 제공하는데요, 이걸 커스텀 하려면 어떻게 하는지, 이때 또 어떤 문제가 있었는지 알아보겠습니다 :) 기본 clear button 우선 기본적인 clear 버튼은 clearButtonMode를 통해 만들어줄 수 있습니다. textfield.clearButtonMode = .whileEditing 이렇게 4가지 모드가 있는데 각각은 보시면 아시겠죠?? 아무튼 이걸 설정해주면 이렇게 clear 버튼이 나타나고, 버튼을 눌러 clear까지 알아서 해줄 수가 있습니다. clear button custom 문제는 저 clear 버튼을 커스텀 할 수가 없다는 겁니다.. (아니 🍎 쓰는김에 좀 더 쓰지...) 제 문제는 저 어두운 배경에서 clear 이 너무 안..