2013-05-23 4 views
1

У меня есть изображение: enter image description here. В IPAD, когда я помещаю его с этим кодом:Растяжка изображения в iOS с использованием colorWithPatternImage

[separatorLineView setFrame:CGRectMake(10, 0, 430, 3)]; 
separatorLineView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"divider.png"]]; 

В IPAD, он показывает, как это:

enter image description here

В iPhone, он отлично работает.

Код для iPhone выглядит следующим образом:

[separatorLineView setFrame:CGRectMake(10, 0, 180, 3)]; 
    separatorLineView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"divider.png"]]; 

Как избежать повторения? Должен ли я использовать resizableImageWithCapInsets?

нужны некоторые рекомендации и предложения ..

ответ

7

добавить следующий метод

-(UIImage *)imageResize :(UIImage*)img andResizeTo:(CGSize)newSize 
{ 
    CGFloat scale = [[UIScreen mainScreen]scale]; 

    //UIGraphicsBeginImageContext(newSize); 
    UIGraphicsBeginImageContextWithOptions(newSize, NO, scale); 
    [img drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

Теперь измените код, как

[separatorLineView setFrame:CGRectMake(10, 0, 180, 3)]; 
    separatorLineView.backgroundColor = [UIColor colorWithPatternImage:[self imageResize :[UIImage imageNamed:@"divider.png"] andResizeTo:separatorLineView.frame.size]]; 
-1

Да вы правильные resizableImageWithCapInsets использование.

http://iosdevelopertips.com/user-interface/ios-5-uiimage-and-resizableimagewithcapinsets.html

+0

это право? – lakesh

+0

да это может сработать. Если нет, то увеличьте значение 12. Это должно быть немного больше: левая и правая прокладка –

+0

также увеличена до 100. Без изменений ... UIEdgeInsets insets = UIEdgeInsetsMake (0,100,0,100); – lakesh

 Смежные вопросы

  • Нет связанных вопросов^_^