UIView的背景缩放不正确并被抵消

时间:2012-01-31 08:04:03

标签: objective-c ios

我看过其他帖子,但仍然无法正确缩放我的背景图片。我使用UIView来设置背景图像,因为我需要背景图像垂直平铺。我将UIView的框架设置为与我的像素宽度和png的高度相同,但图像偏移并缩放不正确。可能是因为图像有一些透明像素?我尝试了以下方法:

_view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]];
_view.opaque = NO;
_view.contentMode = UIViewContentModeScaleAspectFit;
//_view.layer.contentsGravity = kCAGravityTop;

2 个答案:

答案 0 :(得分:1)

您可能会发现创建UIView的子类更容易。在子类中,覆盖drawRect:以使用drawAsPatternInRect:绘制图像。该方法将通过平铺图像来填充视图:

- (void)drawRect:(CGRect)dirtyRect {
    [self.tileImage drawAsPatternInRect:self.bounds];
}

答案 1 :(得分:0)

我认为这是因为您使用图像作为背景颜色。 如果您使用了imageview,并将其添加为子视图,就会更好。

//编辑垂直平铺

 int y = 0;
int imgsize = 100; //in pixels
for (i =0; i<max; i++) { //max is the number of tiles you want
UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
img.frame = CGRectMake(0,y+imgsize,100,100);
y+=imgsize; //increase y each time(new starting point)
[_view addSubview:img];
}

可能不是最好的方法,但它会起作用。

相关问题