以编程方式在Xib中设置背景图像

6
我有一个包含UIControlUIScrollView元素的XIB文件。我想在视图中添加一个背景图片。我尝试在IB中添加一个ImageView,但是我无法将其呈现为背景,并且它遮挡了控件元素。发送sendViewBack消息似乎也没有任何作用。

当我以编程方式创建UIImageView时,它不会显示出来。

以下是我尝试的代码:

以编程方式创建

UIImage *imageBackground = [UIImage imageWithContentsOfFile:@"globalbackground"];

UIImageView *backgroundView = [[UIImageView alloc] initWithImage:imageBackground];

[[self view] addSubview:backgroundView];

[[self view] sendSubviewToBack:backgroundView];

处理 NIB 文件

[[self view] sendSubviewToBack:background];

在这里,background是在头文件中声明的IBOutlet,并且与IB中的图像视图连接。

我是否漏掉了一步?

2个回答

8

设置框架并不使用sendSubviewToBack:。如果您正在使用UIImageView,则必须使用[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"imageName.png"]];

UIImageView *backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"imageBackground"]];
backgroundView.frame = self.view.bounds;
[[self view] addSubview:backgroundView];

希望这是你要的内容。

1
如果有其他UI组件,请确保使用insertSubView,如下所示:[self.view insertSubview:backgroundView atIndex:0]; - TharakaNirmana

5
  • 不要将图像视图添加为滚动视图的子视图,它需要作为层次结构的顶级单独视图,然后发送到Z序列的后面。
  • 您需要将滚动视图的背景设置为[UIColor clearColor],并确保滚动视图未标记为不透明。您可以在代码中或界面生成器中执行此操作。
  • 不要使用imageWithContentsOfFile,然后只传递一个没有扩展名的文件名(我假设是.png)- 这可能会返回nil。改用imageNamed:(在这种情况下,您不提供扩展名,iOS4及以上版本)

根据您的图像性质,您还可以生成一种颜色,并将其用作滚动视图的背景颜色。我假设self.view是滚动视图:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"globalBackground"]];

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