[Objective-C] 클래스에서 깊은 복사 구현해보기
·
iOS/Objective-C
레거시 코드를 공부하면서 옵젝씨 공부 내용 좀 정리하려고 했는데..어쩌다보니 첫 글이 다 건너뛰고 복사로 넘어와버렸다... 요즘에는 뭐 대부분 Swift로 코드를 짜기 때문에 옵젝씨는 공부할 필요가 없지 않을까 싶었는데뭐.... 회사에서 레거시가 옵젝씨로 쓰여져있다면 어쩔 수가 없다... 공부해야지... 얕은 복사와 깊은 복사이는 Swift를 공부해도 많이 접하는 개념이다. 내가 가장 먼저 접했던건 Class와 Struct의 객체 할당 시 복사 방식의 차이를 공부할 때 알게 됐다. Class는 참조 타입이다. 그래서 Class 타입의 인스턴스를 다른 변수에 할당하게 되면 참조 값이 복사된다. 값 자체가 복사되는 것이 아니기 때문에 원본 값의 내부 정보를 변경하게 되면 동일한 참조 주소가 복사된 변수의 내..
[Core Image]Tip: CIFilter 편하게 불러오기
·
iOS/Image
CIFilter는 종류가 굉장히 많다SepiaTone, PhotoEffectTransfer, PhotoEffectTonal.... 이 많은 것들을 보통은 다음과 같이 불러온다let photoEffectTransfer = CIFilter(name: "CIPhotoEffectTransfer")근데 이렇게 불러오면 타입이 CIFilter의 옵셔널 타입이라 사용할 때마다 언래핑을 해줘야 한다.그래서 난 다음과 같이 사용했다enum Filter { case photoEffectTransfer case photoEffectTonal case randomGenerator case multiplyBlendMode case vignette case sepiaTone var c..
[Core Image] CIFilter 체이닝 가독성 개선하기
·
iOS/Image
https://rongios.tistory.com/14 [Core Image] CIImage, CIContext, CIFilterhttps://rongios.tistory.com/1 Swift의 다양한 이미지 - UIImage, CGImage, CIImageCIImage..? CGImage...?iOS 개발을 하면서 이미지를 다루다 보면 다양한 이미지 타입들을 보게 된다. UIImage, CGImage, CIImage 그리고 SwiftUIrongios.tistory.com앞선 포스팅에서 우린 CIImage에 CIFilter를 체이닝 방식으로 적용하는 걸 배웠다코드는 다음과 같다func applyFilters(to image: CIImage) -> CIImage? { // 1️⃣ 세피아 필터 적용 ..
[Core Image] CIImage, CIContext, CIFilter
·
iOS/Image
https://rongios.tistory.com/1 Swift의 다양한 이미지 - UIImage, CGImage, CIImageCIImage..? CGImage...?iOS 개발을 하면서 이미지를 다루다 보면 다양한 이미지 타입들을 보게 된다. UIImage, CGImage, CIImage 그리고 SwiftUI의 Image까지..!(여기서는 SwiftUI의 Image까지 다루진 않는다!!) 이 많rongios.tistory.com예전에 한 번 Swift에서 사용하는 다양한 이미지 타입들에 대해 다뤄본 적이 있다. 그 때 가장 생소했던 이미지 타입은 CIImage였다아무래도 CIImage는 UIImage, CGImage와 다르게 이미지 데이터 자체를 저장하는 타입은 아니기 때문에 그런 것이 아닐까? 그래..
[Core Graphics]CGAffineTransform 2편 - 기울기와 회전
·
iOS/Image
https://developer.apple.com/documentation/coregraphics/cgaffinetransform?language=objc CGAffineTransform | Apple Developer DocumentationAn affine transformation matrix for use in drawing 2D graphics.developer.apple.comhttps://rongios.tistory.com/12 [Core Graphics]CGAffineTransform 1편 - Scale, AnchorPointhttps://developer.apple.com/documentation/coregraphics/cgaffinetransform?language=objc CGAffi..
[Core Graphics]CGAffineTransform 1편 - Scale, AnchorPoint
·
iOS/Image
https://developer.apple.com/documentation/coregraphics/cgaffinetransform?language=objc CGAffineTransform | Apple Developer DocumentationAn affine transformation matrix for use in drawing 2D graphics.developer.apple.com UIView의 회전, 좌우반전개발을 하다보면 UIView를 이리 저리 회전시킬 때도 있고 어떨 땐 좌우 반전을 줘야하는 경우가 있다.그 때 사용하는 기능이 CGAffineTransform이다.  좌우 반전하는 코드 예시를 보자import UIKitclass SampleViewController: UIViewControl..
[Swift]픽셀 데이터 다루기 3편 - 다운샘플링, 이미지 자르기
·
iOS/Image
1편: https://rongios.tistory.com/9 [Swift]픽셀데이터 다루기 1편 - RGBA란?RGBA?RGBA란 무엇일까? RGB는 우리가 흔히 아는 색상 표현 방식 중 하나이다.RGB는 3개의 숫자로 이루어져 있고 각 숫자는 0에서부터 255까지의 숫자이다.그리고 각 숫자는 순서대로 빨강, 초록, 파랑rongios.tistory.com2편: https://rongios.tistory.com/10 [Swift]픽셀 데이터 다루기 2편 - Grayscale1편: RGBA란? 1편에서는 UIImage로부터 픽셀 데이터를 추출하고 색상을 반전시키는 작업을 했다. 오늘은 아주 짧게 Grayscale을 적용하는 코드를 작성해볼까 한다.시작하기 전 오늘도 나를 도와줄 이rongios.tistory..
[Swift]픽셀 데이터 다루기 2편 - Grayscale
·
iOS/Image
https://rongios.tistory.com/9 [Swift]픽셀데이터 다루기 1편 - RGBA란?RGBA?RGBA란 무엇일까? RGB는 우리가 흔히 아는 색상 표현 방식 중 하나이다.RGB는 3개의 숫자로 이루어져 있고 각 숫자는 0에서부터 255까지의 숫자이다.그리고 각 숫자는 순서대로 빨강, 초록, 파랑rongios.tistory.com주의) 여기서 다루는 내용은 실전에서 사용하는 방식을 사용하지 않음 1편에서는 UIImage로부터 픽셀 데이터를 추출하고 색상을 반전시키는 작업을 했다. 오늘은 아주 짧게 Grayscale을 적용하는 코드를 작성해볼까 한다.시작하기 전 오늘도 나를 도와줄 이상해씨를 소개하고 시작하겠다. 먼저 그레이스케일을 어떻게 적용할까 고민을 해봤다.  내가 생각한 아이디어는..
[Swift]픽셀데이터 다루기 1편 - RGBA란?
·
iOS/Image
RGBA?RGBA란 무엇일까? RGB는 우리가 흔히 아는 색상 표현 방식 중 하나이다.RGB는 3개의 숫자로 이루어져 있고 각 숫자는 0에서부터 255까지의 숫자이다.그리고 각 숫자는 순서대로 빨강, 초록, 파랑을 의미하고 숫자가 클수록 색이 짙어진다.알기 쉽게 예를 들어보면 (255, 0, 0)라는 색상은 아래와 같이 아주 빨갛다이렇게 세가지 색상의 혼합으로 우리는 모든 색상을 나타낼 수 있다. 그렇다면 RGBA는 무엇일까?우리가 알던 RGB에 Alpha 값이 더해진게 RGBA다. Alpha 값은 해당 이미지의 투명도를 결정하는 역할을 한다. 그럼 실제 이미지에서 RGBA 픽셀 데이터를 추출해보면 어떤 형태일까?? 한 번 실험해보자Swift로 RGBA 픽셀 데이터 추출하기오늘의 실험을 도와줄 친구는 이..
SwiftUI Widget
·
iOS/Swift
📄 컨텐츠연습용 프로젝트를 만들다가 위젯을 도입하게 되었다. 위젯에 대해서는 하나도 모르는 상태로 시작해서 하나하나 알게된 내용을 정리해보려 한다.WidgetCreating a widget extension | Apple Developer Documentation위젯에 대한 공식 문서를 살펴보면 위젯을 어떻게 추가하는지 어떻게 코드를 적어야하는지 예시가 자세하게 설명되어 있다. 그 예시 코드로 설명을 적어보겠다.Widget 타겟 추가하기위젯은 다른 일반 화면처럼 단순히 View 파일을 생서해서 적용하는 것이 아니라 별도의 타겟을 추가해야한다. 따라서 만약 기본 앱 타겟에서 사용하는 기능들을 위젯에서도 사용하고 싶다면 해당 공통 기능들은 따로 모듈을 분리해서 사용하면 좋다.Widget 코드 작성하기@ma..