2012-01-04 128 views
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]; 

处理其中的背景是在头文件中声明和连接到一个IBOutlet IB中的NIB图像视图。

有没有我在这里失踪的一个步骤?

回答

8

设置框架并且不使用sendSubviewToBack:。如果您正在使用的UIImageViews工作,你必须使用[[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

是否有其他用户界面组件,确保使用insertSubView象下面这样:[self.view insertSubview:backgroundView atIndex:0]; – TharakaNirmana 2015-04-02 09:04:58

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

根据您的图像的性质,还可以生成与它的颜色,并使用该背景颜色你的滚动视图。我假定self.view是滚动视图:

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