2013-03-18 14 views
7

Chcę ustawić obraz tła UIScrollView jako rozciągliwy obraz. Próbowałem:Jak ustawić obraz tła UIScrollView jako rozciągliwy obraz?

UIImage* backgroundImage =[[UIImage imageNamed:@"background"] 
           resizableImageWithCapInsets:UIEdgeInsetsMake(100, 0, 0, 0) ]; 
self.scrollView.backgroundColor = [UIColor colorWithPatternImage:backgroundImage]; 

Ale to nie jest rozciąganie.

Co mogę zrobić?

Odpowiedz

3

Jeśli chcesz skorzystać z resizable właściwości UIImage, trzeba użyć UIImageView. Jak już zauważyłeś, nie działa, jeśli ustawisz go jako kolor tła. Po prostu stwórz UIImageView i umieść go za swoim UIScrollView z tą samą ramką, jeśli trzeba ją naprawić, lub wewnątrz urządzenia UIScrollView o tym samym rozmiarze co contentSize, jeśli chcesz przewinąć ...

1

dodać zdjęcie w UIImageView iw Twoim przypadku ustawić

yourImageView.contentMode = UIViewContentModeScaleAspectFill; 

można ustawić go do którejkolwiek z następujących

UIViewContentModeScaleToFill, 
UIViewContentModeScaleAspectFit, 
UIViewContentModeScaleAspectFill, 
UIViewContentModeRedraw, 
UIViewContentModeCenter, 
UIViewContentModeTop, 
UIViewContentModeBottom, 
UIViewContentModeLeft, 
UIViewContentModeRight, 
UIViewContentModeTopLeft, 
UIViewContentModeTopRight, 
UIViewContentModeBottomLeft, 
UIViewContentModeBottomRight 

Ans dodać to UIImageView w was scrolView.

Innym sposobem jest użycie następującej metody pobierania/tworzenia rozmiaru obrazu.

Użyj następującej metody ze szczególnym Hight i szerokości z obrazu

+ (UIImage*)resizeImage:(UIImage*)image withWidth:(int)width withHeight:(int)height 
{ 
    CGSize newSize = CGSizeMake(width, height); 
    float widthRatio = newSize.width/image.size.width; 
    float heightRatio = newSize.height/image.size.height; 

    if(widthRatio > heightRatio) 
    { 
     newSize=CGSizeMake(image.size.width*heightRatio,image.size.height*heightRatio); 
    } 
    else 
    { 
     newSize=CGSizeMake(image.size.width*widthRatio,image.size.height*widthRatio); 
    } 


    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return newImage; 
} 

Metoda ta powrotnej NewImage, z konkretnym rozmiarze, który można określić.

0

Spróbuj ten

UIImage* backgroundImage =[[UIImage imageNamed:@"back.jpg"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(100, 0, 0, 0) ]; 
UIGraphicsBeginImageContextWithOptions(self.scrollView.bounds.size, NO, 0.0); 
[backgroundImage drawInRect:self.scrollView.bounds]; 
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

self.scrollView.backgroundColor = [UIColor colorWithPatternImage:newImage];