2012-01-31 3 views
1

다른 게시물을 보았지만 여전히 배경 이미지를 올바르게 확장 할 수 없습니다. 난 수직으로 타일을 배경 이미지가 필요하기 때문에 UIView를 사용하여 배경 이미지를 설정합니다. UIView의 프레임을 내 픽셀 너비와 Png 높이와 같은 크기로 설정했지만 이미지의 크기가 잘못 조정되고 크기가 조정됩니다. 이미지에 투명 픽셀이 포함되어있을 수 있습니까? 나는 다음을 시도했다 :UIView의 백그라운드 크기가 잘못 조정되어 오프셋 됨

_view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]; 
_view.opaque = NO; 
_view.contentMode = UIViewContentModeScaleAspectFit; 
//_view.layer.contentsGravity = kCAGravityTop; 
+0

스크린 샷을 표시 할 수 있습니까? –

답변

1

UIView의 하위 클래스를 만드는 것이 더 쉽습니다. 하위 클래스에서 drawAsPatternInRect:을 사용하여 이미지를 그리려면 drawRect:을 재정의하십시오. 이 방법은 이미지를 바둑판 식으로 배열하여 화면을 채 웁니다.

- (void)drawRect:(CGRect)dirtyRect { 
    [self.tileImage drawAsPatternInRect:self.bounds]; 
} 
0

이미지를 배경색으로 사용하고 있기 때문이라고 생각한다. 이미지 뷰를 사용하면 훨씬 좋을 것입니다. 그리고이를 하위 뷰로 추가했습니다. 수직 타일링

가 // 편집

int y = 0; 
int imgsize = 100; //in pixels 
for (i =0; i<max; i++) { //max is the number of tiles you want 
UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]]; 
img.frame = CGRectMake(0,y+imgsize,100,100); 
y+=imgsize; //increase y each time(new starting point) 
[_view addSubview:img]; 
} 

이 그것을 할 수있는 가장 좋은 방법은되지 않을 수 있습니다,하지만 그것은 작동합니다.

+0

고맙겠지 만 어떻게 이미지를 타일로 만들 수 있습니까? – prostock

+0

죄송합니다. 질문을 제대로 읽지 않았습니다. 타일링 효과를주기 위해 원래의 대답을 편집했습니다. –

+0

'[UIColor colorWithPatternImage : image]'를 사용하면 성능이 크게 향상됩니다. 이것은 이미지를 바둑판 식으로 배열하는 매우 무례한 방법이지만, 이미지 그리기를위한 최상의 CoreGraphics 루틴을 피합니다 ('[image resizableImageWithCapInsets : {0,0 , 0,0} resizingMode : UIImageResizingModeTile]'타일 된 이미지를 쉽게 만들 수 있습니다.) – colinta

관련 문제