UIImage VS UIImageView

ellyheetov·2021년 2월 16일
0
post-thumbnail

UIImage

class UIImage : NSObject

UIImage class는 다양한 이미지 포맷들을 지원하기 때문에 모든 종류의 이미지 데이터를 나타낼 수 있다. 하지만 일반적으로 PNG 또는 JPEG파일 형식을 권장한다. 이미지 객체는 이 두개의 포맷에 최적화 되어있다.

Image객체는 immutable하여 한번 생성된 이후에는 수정할 수 없다. 이는 처음 생성시에 이미지의 속성들을 명시해야함을 의미한다. 또한 이미지 데이터에 직접적으로 접근하지 않는다. (이미지를 복사하여 값을 조정하는 메소드를 제공하기는 하지만...)

저장공간에 있는 이미지 파일이나 프로그래밍 적으로 생산된 이미지 모두 다룰 수 있다. 다양한 방식으로 UIImage를 다룰 수 있다.

  • 이미지를 UIImageView를 할당하여 화면상에 이미지를 보여줄 수 있다.
  • buttons, sliders, 여러 컨트롤들을 사용하여 customize할 수 있다.
  • graphics 요소를 사용하여 image를 직접 그릴 수 있다.
  • image데이터를 요구하는 다른 API에 이미지를 보낼 수 있다.

UIImage를 생성하는 방법

이 클래스를 의 메소드를 사용하여 이미지 객체를 생성할 수 있다. 반드시 존재하는 데이터 이어야 한다. 빈 이미지를 생성하여 그 위에 그릴 수는 없다. 이미지 객체를 생성하는 여러 옵션들이 있다.

  • init(named:in:compatibleWith:)
    app의 bundle에 존재하는 image,image asset으로부터 이미지를 생성한다. 이 메소드는 이미지 데이터를 캐쉬하여 사용한다. 따라서 빈번하게 이미지를 사용할 때 권장되는 메소드이다.

  • imageWithContentsOfFile: or init(contentsOfFile:)
    bundle에 있지 않은 초기 데이터를 가지고 이미지 객체를 생성한다. 이미지 데이터를 로드할때마다 disk에서 가져오므로 빈번하게 이미지를 로드 할때에는 지양하는 것이 좋다.

  • animatedImage(with:duration:) and animatedImageNamed(_ :duration:)
    여러개의 일련의 이미지들로 구성된 하나의 UIImage 객체를 생성할 때 사용되는 메소드 이다.

UIImageView

class UIImafeView : UIView

Image View는 UIImage 객체를 사용하여 이미지를 효과적으로 그리도록 한다. 이미지를 효과적으로 보여주는 것은 UIImageView의 역할이지만 UIImage의 속성을 기반으로 보여주게 된다.

UIImageView가 PNG, JPEG의 파일들을 보여주려고 할때, 런타임 시간에 이미지를 바꾸거나 스토리 보드 파일에서 이미지를 형성할 수 있다.

Size

이미지 뷰는 이미지의 사이즈에 맞게 변경될 수 있다.

inspector를 이용하여 변경하는 방법과 코드를 통해 변경하는 방법이 있다.

  • inspector를 이용한 방법
    Screen Shot 2021-02-16 at 12 00 02 PM
  • Code를 이용한 방법
    Screen Shot 2021-02-16 at 12 01 35 PM

예시

scaleAspectFit scaleAspectFill scaleToFill
Image Image
원래의 이미지의 비율 유지 원래의 이미지의 비율 상관 X

Transparency & Animating

UIImageView는 view를 기반으로 하는 하나의 이미지를 보여주거나 일련의 애니메이션이 적용된 이미지들을 보여주는 컨테이너를 제공한다. 이미지의 애니메이션을 위해 UIImageVew는 지속 시간이나 애니메이션의 frequency등을 제어할수 있는 메소드를 제공한다. 또한 에니메이션을 자유롭게 시작하고 정지 할 수 있다.

Responding to Touch Events

기본적으로 ImageView객체는 사용자의 이벤트에 반응하지 않지만 UIImageView의 subclass를 지정하여 이벤트를 처리할 수 있다. 객체를 초기화 할 시 userInteractionEnabledYes로 하는 것을 잊지 말아야 한다.

정리

한마디로 정리하자면,
UIImage는 이미지를 위한 데이터를 가지고 있는 객체이다.
UIImageView는 UIImage를 보여주기 위한 custum view라고 볼 수 있다.

참고
https://stackoverflow.com/questions/8070805/difference-between-uiimage-and-uiimageview

profile
 iOS Developer 좋아하는 것만 해도 부족한 시간

0개의 댓글