인디노트

macOS 앱 개발시 iOS 같은 UIImage 를 사용하고 싶은때 본문

소스 팁/Objective C, Swift, iOS, macOS

macOS 앱 개발시 iOS 같은 UIImage 를 사용하고 싶은때

인디개발자 2021. 4. 10. 09:57

UIImage 는 iOS 앱 개발시 유용하게 사용하는 code 입니다.

macOS 앱을 개발하다보면 NSImage 를 사용해야 하는데 이러한 경우 소스를 일원화 하기 위해서 UIImage 를 만들어 사용하면 편리할 수 있습니다.

우선, 참고사항으로

macOS 용 타켓인지 확인하기 위하여 코드를 다음의 내용으로 랩핑할 수 있습니다.

#if os(macOS) / #endif

 

코드에서 Cocoa 를 선언합니다. 이것은 NSImage 를 사용하기 위해서 입니다.

import Cocoa

 

다음과 같이 UIImage 를 NSImage 로 사용하라는 선언을 합니다.

typealias UIImage = NSImage

 

그리고 NSImage 에 CGImage 기능을 추가 합니다. UIImage 에는 있지만 NSImage 에는 없기 때문입니다.

extension NSImage {
    var cgImage: CGImage? {
        var proposedRect = CGRect(origin: .zero, size: size)

        return cgImage(forProposedRect: &proposedRect,
                       context: nil,
                       hints: nil)
    }

    convenience init?(named name: String) {
        self.init(named: Name(name))
    }
}

 

이제 다음과 같이 UIImage 를 사용할 수 있습니다.

struct Data {
    let string: String
    let image: UIImage
}

 

반응형
Comments