使用colorWithPatternImage在iOS中拉伸图像

lak*_*esh 1 stretching uiimage ios

我有这样的图像: 在此输入图像描述.在iPad中,当我使用这些代码放置它时:

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

在iPad中,它显示如下:

在此输入图像描述

在iPhone中,它工作正常.

iPhone的代码如下所示:

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

如何避免重复?我必须使用resizableImageWithCapInsets吗?

需要一些指导和建议..

man*_*jmv 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;
}
Run Code Online (Sandbox Code Playgroud)

现在将您的代码更改为

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