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

And*_*nov 6 cocoa-touch uiview uiimageview uicontrol ios

我有一个XIB文件UIControlUIScrollView里面的元素.我想在视图中添加背景图像.我尝试在IB中添加一个ImageView,但我不能让它作为背景出现并且它模糊了控制元素.发送sendViewBack消息似乎也没有做任何事情.

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

以下是我尝试的代码:

程序化创作

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

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

[[self view] addSubview:backgroundView];

[[self view] sendSubviewToBack:backgroundView];
Run Code Online (Sandbox Code Playgroud)

处理NIB文件

[[self view] sendSubviewToBack:background];
Run Code Online (Sandbox Code Playgroud)

其中background是IBOutlet在头文件中声明并连接到IB中的NIB图像视图.

我在这里缺少一步吗?

pmk*_*pmk 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];
Run Code Online (Sandbox Code Playgroud)

希望这是这笔交易.


jrt*_*ton 5

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

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

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"globalBackground"]];
Run Code Online (Sandbox Code Playgroud)