如何将 UIScrollView 的背景图片设置为可拉伸图片?

Posted

技术标签:

【中文标题】如何将 UIScrollView 的背景图片设置为可拉伸图片?【英文标题】:How to set UIScrollView's background image as a stretchable image? 【发布时间】:2013-03-18 14:28:05 【问题描述】:

我想将 UIScrollView 的背景图片设置为可拉伸的图片。我试过了:

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

但它没有拉伸。

我能做什么?

【问题讨论】:

【参考方案1】:

如果您想利用UIImage 的可调整大小的属性,您需要使用UIImageView。正如您所注意到的,如果您将其设置为背景颜色,则它不起作用。只需创建一个UIImageView 并将其放在您的UIScrollView 后面,如果它必须被修复,或者在您的UIScrollView 中,如果您希望它滚动,它的大小与contentSize 相同...

【讨论】:

【参考方案2】:

UIImageView 中添加图片并在您的情况下设置

yourImageView.contentMode = UIViewContentModeScaleAspectFill;

您可以将其设置为以下任何一种

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

Ans 在你 scrolView 中添加这个 UIImageView

另一种方法是您可以根据需要使用以下方法获取/创建图像大小。

使用以下方法与特定 hightwidthimage

+ (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;

此方法返回 NewImage,具有您指定的特定大小。

【讨论】:

【参考方案3】:

试试这个

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]; 

【讨论】:

以上是关于如何将 UIScrollView 的背景图片设置为可拉伸图片?的主要内容,如果未能解决你的问题,请参考以下文章

将动态高度设置为 UIScrollView Swift

将 UIScrollView 委托设置为它自己的自定义类

放大和平移时看到大面积的 UIScrollView 背景

如何将UIScrollView的“主要”内容设置为屏幕高度 - “次要”内容“低于首屏”

如何使用 uiscrollview 向上滚动?

iOS下uiview和uiscrollview设置背景图片的源码