【问题标题】:Set background Image for a Custom UIView为自定义 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 后,我无法绘制/绘制任何东西。如果有人能说出原因,我将不胜感激。

标签: iphone objective-c ios ipad


【解决方案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"]];
          

          【讨论】:

            猜你喜欢
            • 2015-01-24
            • 1970-01-01
            • 1970-01-01
            • 2013-04-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-05-19
            相关资源
            最近更新 更多