为自定义 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 设置背景图像的主要内容,如果未能解决你的问题,请参考以下文章