如何设置视图的背景图像?

Dan*_*iel 27 iphone objective-c uiview uiimageview

我是Obj-C/Cocoa Touch/iPhone OS的初学者.

我想在每次调用视图时为我的应用程序提供不同图像的背景.

说我有10张图片.我这样用它:

//random image generation
NSString* imageName;
int aRandomNumber = arc4random() % 10;
imageName =[NSString stringWithFormat:@"g%d.jpg",aRandomNumber]; 
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:imageName]]];
NSLog(@"aRandomNumber is %d", aRandomNumber);
//random image is generated
Run Code Online (Sandbox Code Playgroud)

它的工作正常

  • 现在,假设我的视图中有文本标签,并且由于图像颜色,文本无法正确显示.我怎么能让它透明一点?(我猜在Interface Builder中称为alpha.)
  • 说我的图像不是320x480.如何设置它以填充整个视图?

我怎么能用UIView/UIImageView做到这一点?

initWithHue:saturation:brightness:alpha:在文档中找到但它不起作用:

self.view.backgroundColor = [[UIColor alloc] initWithHue:0.0 saturation:1.0 brightness:1.0 alpha:1.0];
Run Code Online (Sandbox Code Playgroud)

请帮忙!


朋友建议........

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:imageName]]];
Run Code Online (Sandbox Code Playgroud)

..........他告诉它更高效,因为它不会将图像保存在缓存中.

Gur*_*gam 82

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

更多信息与示例项目


Den*_*sie 38

除了这里的所有其他响应,我真的不认为以这种方式使用backgroundColor是正确的做事方式.就个人而言,我会创建一个UIImageView并将其插入到您的视图层次结构中.您可以将其插入顶视图并使用sendSubviewToBack将其一直推到后面:或者您可以将UIImageView作为父视图.

我不担心每个实现在这一点上的效率如何,因为除非你真正看到一个问题,否则它并不重要.您现在的首要任务应该是编写您可以理解并且可以轻松更改的代码.创建UIColor以用作背景图像并不是最明智的方法.


Saa*_*aad 24

用这个

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


小智 6

简单方法:

   -(void) viewDidLoad {
   self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage       imageNamed:@"background.png"]];
    [super viewDidLoad];
    }
Run Code Online (Sandbox Code Playgroud)


Mal*_*eur 1

您希望主视图的背景颜色是半透明的吗?它背后什么也没有......所以什么也不会真正发生:

如果要修改任何视图的 alpha,请使用 alpha 属性:

UIView *someView = [[UIView alloc] init];
...
someView.alpha = 0.8f; //Sets the opacity to 80%
...
Run Code Online (Sandbox Code Playgroud)

视图本身具有 Alpha 透明度,而不仅仅是 UIColor。

但由于你的问题是你无法阅读图像顶部的文本......要么:

  1. [设计] 重新考虑图像的设计/放置。它们有必要作为背景图像吗?标签的位置如何?
  2. [代码] 这并不是最好的解决方案,但您可以做的是创建一个 UIView,其框架占据整个页面并为其添加一些 alpha 透明度。这将创建某种“覆盖”。
UIView *overlay = [[[UIView alloc] init] autorelease];
overlay.frame = self.view.bounds;
overlay.alpha = 0.2f;
[self.view addSubview:overlay];
... Add the rest of the views
Run Code Online (Sandbox Code Playgroud)