为自定义 UIView 设置背景图像

Posted

技术标签:

【中文标题】为自定义 UIView 设置背景图像【英文标题】:Set background Image for a Custom UIView 【发布时间】:2011-08-02 10:30:45 【问题描述】:

我正在使用 OpenGL 开发一个绘图应用程序。

我使用“自定义 UIView”在屏幕上绘图,并使用另一个 UIImageView 为其设置背景图像。看一下屏幕截图以清楚地理解它。我的问题是我无法在任何一个视图上设置背景图像。我必须使用不同的纹理作为我必须在其上绘画的绘图板。谁能建议这种方法有什么不正确的地方?

我已将此代码用于自定义 UIView 但未成功..但它仅显示白色默认背景..

- (id)initWithCoder:(NSCoder*)coder 
    UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"Rough_White_Paper_with_tape.png"]];
    self.backgroundColor = background;
    [background release];     

【问题讨论】:

将图像加载到自定义 UIView 后,我无法绘制/绘制任何东西。如果有人能说出原因,我将不胜感激。 【参考方案1】:
NSURL *imgUrl=[[NSURL alloc] initWithString:@"http://img835.imageshack.us/img835/9794/screenshot20110802at345.png"];
NSData *imgData = [NSData dataWithContentsOfURL:imgUrl];
UIImage *img = [UIImage imageWithData:imgData];

imageView = [[UIImageView alloc] initWithImage:img];

[self addSubview:imageView ];
[self sendSubviewToBack:imageView ];

[imageView release]; [imgUrl release];

【讨论】:

我应该在自定义 UIView 还是 UIImageView 中使用它(我在屏幕截图中显示了两个视图)?? @ram:当你有足够的声望时,编辑变得可用。 rsp1990:这是一个替代方案,它创建一个新的 UIImageView,您将插入到父视图中(因此,在自定义视图后面,其中包含绘图)。发布的所有答案都涉及相同的过程。如果您只是在 UI 设计器中放置一个 UIImageView,那么您应该可以在那里设置图像。 我使用过 - (id)initWithCoder:(NSCoder*)coder.. 我没有使用 ViewDidLoad.:| @Tommy : 你能告诉我绘图障碍的问题吗???使用此代码后我无法绘制任何东西.. 您是否可以将新的 UIImageView 添加为自定义 UIView 的子视图,并且它的大小相同或更大?如果是这样,那么它可能只是在您的绘图内容之上,隐藏了任何事情正在发生的事实。尝试将其添加到视图控制器的self.view【参考方案2】:

使用这个

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

【讨论】:

【参考方案3】:
- (id)initWithCoder:(NSCoder *)coder 
    self = [super initWithCoder:coder];
    if (self) 
        UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"Rough_White_Paper_with_tape.png"]];
        self.backgroundColor = background;
        [background release];
    
    return self;

你只需要添加 return self;它对我来说非常好......

【讨论】:

这可行,但前提是您按原样使用图像;至少我的简短测试表明没有考虑色调。【参考方案4】:

试试这个:

UIImageView *background = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Rough_White_Paper_with_tape.png"]];
[self addSubview:background];
[self sendSubviewToBack:background];
[background release];

【讨论】:

实际上在使用这种方法后,它会禁用我在屏幕上的绘画/绘图..我无法绘制任何东西..:(【参考方案5】:

试试这个:

 UIImageView *myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed :@“abc.png"]];
 UIView *myUIView = [[UIImageView alloc] initWithFrame :CGRectMake(10,10,250,250)];
 myUIView = myImageView;

【讨论】:

【参考方案6】:

用 UIImageView 设置背景不优雅。 应使用以下 API:

self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"whiteBackground.png"]];

【讨论】:

【参考方案7】:

这是 swift 2

var background = UIImageView(image: UIImage(named: "image.jpg"))
self.addSubview(background)
self.sendSubviewToBack(background)

【讨论】:

【参考方案8】:

使用这个

self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"image.png"]];

【讨论】:

以上是关于为自定义 UIView 设置背景图像的主要内容,如果未能解决你的问题,请参考以下文章

UIView背景颜色和顶部透明png

为自定义 QWidget 设置背景颜色

在 xib 中带有 alpha 的 UIView 背景颜色

将相机胶卷图像导入 UIView 背景

请问如何自定义UITableViewCell的背景颜色

如何使用多个自定义按钮和背景图像显示警报消息? [关闭]