수색…


UIImageView 만들기

프로그래밍 방식으로 UIImageView 를 만들려면 UIImageView 의 인스턴스를 만드는 것 UIImageView .

//Swift
let imageView = UIImageView()

//Objective-C
UIImageView *imageView = [[UIImageView alloc] init];

UIImageView 의 크기와 위치를 CGRect 설정할 수 있습니다.

//Swift
imageView.frame = CGRect(x: 0, y: 0, width: 200, height: 200)

//Objective-C
imageView.frame = CGRectMake(0,0,200,200);

또는 초기화 중에 크기를 설정할 수 있습니다.

//Swift
UIImageView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))

//Objective-C
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,200,200);

//Alternative way of defining frame for UIImageView
UIImageView *imageView = [[UIImageView alloc] init];
CGRect imageViewFrame = imageView.frame;
imageViewFrame.size.width = 200;
imageViewFrame.size.height = 200;
imageViewFrame.origin.x = 0;
imageViewFrame.origin.y = 0;
imageView.frame = imageViewFrame;

참고 : UIImageView 를 사용하려면 UIKit 을 가져와야합니다.

UIImageView에 이미지 지정하기

초기화하는 동안 또는 나중에 image 속성을 사용하여 image UIImageView 할당 할 수 있습니다.

//Swift
UIImageView(image: UIImage(named: "image1"))

UIImageView(image: UIImage(named: "image1"), highlightedImage: UIImage(named: "image2"))

imageView.image = UIImage(named: "image1") 

//Objective-C
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1"];

[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1"] highlightedImage:[UIImage imageNamed:@"image2"]];

imageView.image = [UIImage imageNamed:@"image1"];

UIImageView 애니메이션

당신은 애니메이션을 적용 할 수 UIImageView 신속하게 사용하여 시퀀스에서 이미지를 표시하여 UIImageView 의 애니메이션 속성을 :

imageView.animationImages = [UIImage(named: "image1")!,
                             UIImage(named: "image2")!,
                             UIImage(named: "image3")!,
                             UIImage(named: "image4")!,
                             UIImage(named: "image5")!,
                             UIImage(named: "image6")!,
                             UIImage(named: "image7")!,
                             UIImage(named: "image8")!] 
imageView.animationDuration = 0.3
imageView.animationRepeatCount = 1

animationImages 속성은 애니메이션이 트리거 될 때 위에서 아래로 실행되는 UIImagesArray 입니다.

animationDuration 속성은 애니메이션이 몇 초 동안 실행되는지 나타내는 Double 입니다.

animationRepeatCount 속성은 애니메이션이 실행될 횟수를 나타내는 Int 입니다.

애니메이션을 시작하고 중지하려면 적절한 방법을 호출하여 수행 할 수 있습니다.

imageView.startAnimating()
imageView.stopAnimating()

isAnimating() 메서드는 애니메이션이 잠시 실행되는지 여부를 나타내는 Boolean 값을 반환합니다.

이것은 애니메이션을 만드는 매우 효율적인 방법이 아니라 매우 느리고 자원을 많이 소비합니다. 더 나은 결과를 얻으려면 레이어 또는 스프라이트 사용을 고려하십시오.

원이나 둥근 이미지 만들기

이 예제는 다음과 같이 반경을 반올림하여 UIView 또는 UIImageView 를 만드는 방법을 보여줍니다.

예제 스크린 샷

목표 -C

someImageView.layer.cornerRadius = CGRectGetHeight(someImageView.frame) / 2;
someImageView.clipsToBounds = YES;

빠른

someImageView.layer.cornerRadius = someImageView.frame.height/2
// this should alleviate the performance hit that adding transparency may cause - see http://stackoverflow.com/a/6254531/189804
// Be sure to check scrolling performance with Instruments if you take this approach.
someImageView.layer.shouldRasterize = true
someImageView.clipsToBounds = true // All parts of the image that are outside its bounds (the frame) are cut out (makes the rounded corners visible)

autolayout을 사용하는 경우 someImageView.layer.cornerRadius 코드를 viewDidLayoutSubviews 넣는 것이 someImageView.layer.cornerRadius . 이렇게하면 이미지의 크기가 바뀌면 이미지의 cornerRadius 가 업데이트됩니다.

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    someImageView.layer.cornerRadius = someImageView.frame.size.width/2
    someImageView.layer.masksToBounds = true
}

레이블로 마스크 된 UIImage

이렇게하면 레이블의 글자 모양으로 마스크 된 이미지가됩니다.

목표 -C

self.maskImage.layer.mask = self.maskLabel.layer;
self.maskImage.layer.masksToBounds = YES;

스위프트 3

maskImageView.mask = maskLabel
maskImageView.masksToBounds = true

결과는 다음과 같습니다.

결과

이미지 색상 변경

//Swift
imageView.tintColor = UIColor.redColor()
imageView.image = imageView.image?.imageWithRenderingMode(.AlwaysTemplate)

//Swift 3
imageView.tintColor = UIColor.red
imageView.image = imageView.image?.withRenderingMode(.alwaysTemplate)

//Objective-C
imageView.tintColor = [UIColor redColor];
imageView.image = [imageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]

Mode 속성이 이미지에 미치는 영향

뷰의 내용 모드 속성 은 내용을 배치하는 방법을 알려줍니다. Interface Builder에서는 Attributes Inspector에서 다양한 모드를 선택할 수 있습니다.

속성 검사기 스크린 샷

두 가지 이미지보기를 사용하여 다양한 모드의 작동 방식을 살펴 보겠습니다.

인터페이스 빌더 스크린 샷

채우기 위해 채우기

채우기 위해 채우기

이미지 높이와 너비는 UIImageView 의 크기와 일치하도록 늘어납니다.

가로 세로 맞춤

가로 세로 맞춤

이미지의 가장 긴면 (높이 또는 너비)은 뷰와 일치하도록 늘어납니다. 이렇게하면 전체 이미지를 표시하면서 높이나 너비를 왜곡시키지 않으면 서 가능한 한 이미지를 크게 만듭니다. ( UIImageView 배경을 파란색으로 설정하여 크기가 분명해졌습니다.)

애스펙트 채우기

애스펙트 채우기

이미지의 가장 짧은면 (높이 또는 너비)은 뷰와 일치하도록 늘어납니다. "Aspect Fit"과 마찬가지로 이미지의 비율이 원래의 종횡비에서 왜곡되지 않습니다.

다시 그리기

다시 그리기

다시 그리기는 자체 배율 조정 및 크기 조정을 수행해야하는 사용자 지정보기에만 해당됩니다. 우리는 사용자 정의보기를 사용하지 않으므로 Redraw를 사용하지 않아야합니다. 여기 UIImageView 는 Scale to Fill과 동일한 결과를 주지만, 뒤에서 더 많은 작업을하고 있습니다.

Redraw에 관한 Apple 문서 는 다음과 같이 말합니다 :

콘텐츠 모드는보기 내용을 재활용하는 데 유용하지만 크기 조정 및 크기 조정 작업 중에 사용자 지정보기를 다시 그리기를 원할 때 콘텐츠 모드를 UIViewContentModeRedraw 값으로 설정할 수도 있습니다. 뷰의 컨텐트 모드를이 값으로 설정하면 시스템이 기하학 변경에 대한 응답으로 뷰의 drawRect: 메서드를 강제로 호출합니다. 일반적으로이 값은 가능한 한 사용하지 말아야하며 표준 시스템보기에서는 사용하지 않아야합니다.

센터

센터

이미지가 뷰의 중앙에 배치되지만 이미지의 길이와 너비가 늘어나지 않습니다.

상단

상단

이미지의 위쪽 가장자리는보기의 맨 위에 수평으로 가운데에 배치되며 이미지의 길이와 너비는 늘어나지 않습니다.

바닥

바닥

이미지의 아래쪽 가장자리는 뷰의 아래쪽에 수평으로 가운데에 배치되며 이미지의 길이와 너비는 늘어나지 않습니다.

왼쪽

왼쪽

이미지의 왼쪽 가장자리는 뷰의 왼쪽에서 세로 가운데에 위치하며 이미지의 길이와 너비는 늘어나지 않습니다.

권리

권리

이미지의 오른쪽 가장자리는 뷰의 오른쪽에 세로로 가운데에 표시되며 이미지의 길이와 너비가 늘어나지 않습니다.

왼쪽 상단

왼쪽 상단

이미지의 왼쪽 위 모서리가 뷰의 왼쪽 상단에 배치됩니다. 이미지의 길이와 너비가 늘어나지 않습니다.

오른쪽 상단

오른쪽 상단

이미지의 오른쪽 상단 모서리가 뷰의 오른쪽 상단에 배치됩니다. 이미지의 길이와 너비가 늘어나지 않습니다.

왼쪽 하단

왼쪽 하단

이미지의 왼쪽 아래 모서리는 뷰의 왼쪽 하단에 배치됩니다. 이미지의 길이와 너비가 늘어나지 않습니다.

오른쪽 하단

오른쪽 하단

이미지의 오른쪽 아래 모서리가 뷰의 오른쪽 하단에 배치됩니다. 이미지의 길이와 너비가 늘어나지 않습니다.

노트

  • 이 예제는 원래 여기 에서 온 입니다.

  • 내용 (우리의 경우 이미지)이보기와 같은 크기 ( UIImageView 의 경우) 인 경우 내용 모드를 변경하면 눈에 띄는 차이가 없습니다.

  • 참조 아닌 뷰에 대한 내용 모드에 대한 토론을위한 질문을 UIImageView .

  • Swift에서 컨텐츠 모드를 프로그래밍 방식으로 설정하도록 설정하려면 다음을 수행하십시오.

      imageView.contentMode = UIViewContentMode.scaleToFill
      imageView.contentMode = UIViewContentMode.scaleAspectFit
      imageView.contentMode = UIViewContentMode.scaleAspectFill
      imageView.contentMode = UIViewContentMode.redraw
      imageView.contentMode = UIViewContentMode.center
      imageView.contentMode = UIViewContentMode.top
      imageView.contentMode = UIViewContentMode.bottom
      imageView.contentMode = UIViewContentMode.left
      imageView.contentMode = UIViewContentMode.right
      imageView.contentMode = UIViewContentMode.topLeft
      imageView.contentMode = UIViewContentMode.topRight
      imageView.contentMode = UIViewContentMode.bottomLeft
      imageView.contentMode = UIViewContentMode.bottomRight
    


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow