4

我正在使用 colorWithPatternImage 将视图背景设置为重复图像。如果在我第一次设置背景后视图大小发生变化,图像会被拉伸而不是重复新大小 - 有什么想法可以解决这个问题吗?

这就是我正在做的事情:

  • 在 viewDidLoad 中设置视图的背景:

    frameView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"frame-repeat.png"]];

  • 从服务器获取一些信息,更新视图,更改视图的框架大小以适应新内容(通常,这意味着使视图更高)

  • 即使我使用完全相同的代码再次设置背景颜色,背景图像现在也被拉伸了。

如果我不进行初始背景设置,并且仅在从服务器检索数据并更改视图大小后设置它,它看起来很棒 - 重复,并且没有拉伸。但是,这意味着数据加载时没有背景......看起来很难看。

有没有其他人遇到过这个?

谢谢你的帮助!

4

1 回答 1

5

答案很简单,打电话

[[self view] setNeedsDisplay];

在控制器中,当您更改帧大小时(或者无论您做什么,底线是在帧更改后向视图发送 setNeedsDisplay 消息)。如果这不起作用 - 尝试设置背景颜色。

如果这不起作用,请实现您自己的自定义视图,并在其中覆盖该方法

- (void) drawRect:(CGRect) rect {
   CGRect myBounds = self.bounds;
   CGContextRef context = UIGraphicsGetCurrentContext();
   [[UIColor colorWithPatternImage:[UIImage imageNamed:@"frame-repeat.png.png"]]set];
   CGContextFillRect(context, myBounds);
}

然后,在调整大小后,将 setNeedsDisplay 发送到您的视图。这将适用于 100%。

希望这有帮助,帕维尔

于 2010-06-18T16:14:54.263 回答