如何将UIScrollView的背景图像设置为可伸缩图像?

时间:2013-03-18 14:28:06

标签: ios objective-c uiscrollview stretch

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

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

但它没有伸展。

我该怎么办?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

UIImageView和案例集

中添加图片
yourImageView.contentMode = UIViewContentModeScaleAspectFill;

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

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

Ans UIImageView scrolView中添加+ (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; }

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

使用以下方法将特定宽度图像

一起使用
{{1}}

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

答案 2 :(得分:0)

试试这个

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