在原生iPhone应用中重复使用背景图片

48

除了在nib文件中将UIWebView放置在最后一层之外,我该如何在iPhone应用程序中添加重复的背景图像(例如分组UITableView背景中的灯芯绒外观)?

我需要创建一个与iPhone屏幕尺寸相同的图像,并手动使用复制和粘贴重复吗?

4个回答

161

显然,UIColor不一定只是单一的颜色,也可以是一个图案。令人困惑的是,在Interface Builder中不支持此功能。

相反,您可以使用方便的方法+colorWithPatternImage:设置视图的背景颜色(例如,在-viewDidLoad中),并传递一个UIImage。例如:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"gingham.png"]]; 
}

当然,不要忘记将图像文件添加到您的应用程序包中。

还有一些内置的背景图案"颜色":

  • groupTableViewBackgroundColor
  • viewFlipsideBackgroundColor

由于它们被全局使用在所有iPhone应用程序中,您可能会面临操作系统更新更新您的应用程序外观和感觉的双重风险(给它一个新鲜的外观,这可能有效或无效)。

例如:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]; 
}

请提供一个使用groupTableViewBackgroundColor的代码片段,谢谢! - Frank Krueger
值得一提的是,colorWithPatternImage似乎不支持PNG24。 - Marin Todorov
3
有比这更省内存的东西吗? - Ondrej Rafaj
这比我想象中的要容易实现。感谢您的答案! - w3bshark

2
你应该查看苹果公司的QuartzDemo iPhone示例代码,特别是QuartzImageDrawing.m文件。应该使用以下方法调用:
CGContextDrawTiledImage

2

1

您应该使用colorWithPatternImage。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接