문제

최근에 이미 할당 된 UIIMAGEVIEWS 및 UIIMAGES를 사용하여 이미지로 자원의 할당 및 복제에 소요되는 시간을 최소화하여 렌더링 시간을 절약하려고 노력했습니다.

내가하려고하는 것은 모든 uiimages의 맵을 유지하는 것입니다. 게임이 진행됨에 따라 디스플레이에서 일부 uiimageviews를 제거하고 나중에 다른 사전로드 된 uiimages로 재사용 할 수 있습니다.

Uiimageview를 처음 만들 때 다음과 같은 작업을 수행합니다.

m_imageview = [[uiimageview alloc] initwithimage : initialimg];

m_parentView addSubview : m_imageview];

그리고 다음 시간에 나는 단순히 이미지를 전환합니다.

m_imageview.image 릴리스];

m_imageview setImage OthersavedImg];

문제는 스위치 후 표시된 새로운 이미지 크기가 초기 이미지 크기와 동일하다는 것입니다. 나는 매번 uiimageview를 재현함으로써 문제를 우회했지만 (시간 낭비처럼 보이는지), 왜 이런 일이 일어나고 어떻게 막을 수 있는지 궁금합니다.

감사,

도움이 되었습니까?

해결책

uiimageview의 문서는 "이 방법은 지정된 이미지의 크기와 일치하도록 수신기의 프레임을 조정합니다"라고 말합니다. "setimage :"를 호출 할 때 간단한 속성 세터를 사용합니다. 여분의 재 계산은 수행되지 않습니다. uiimageview의 프레임의 크기를 재조정 해야하는 경우 수동으로 그렇게해야합니다.

당신이 준 맥락에서 판단하면, 이것은 당신이 다소 자주 할 일이 될 것 같습니다. 따라서 uiimageview에 대한 카테고리를 만드는 것이 좋습니다.

uiimageview+resizing.h :

@interface UIImageView (Resizing)

- (void) setImage:(UIImage *)newImage resize:(BOOL)shouldResize;

@end

uiimageview+resizing.m :

@implementation UIImageView (Resizing)

- (void) setImage:(UIImage *)newImage resize:(BOOL)shouldResize {
  [self setImage:newImage];
  if (shouldResize == YES) {
    [self sizeToFit];
  }
}

@end

이제 이미지를 변경하고 ImageView 크기를 조정해야 할 때마다 단순히 #import uiimageview+resizing.h 및 사용 : 사용하십시오.

[myImageView setImage:anImage resize:YES];
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top