UITableViewController Background Image

How can I set an image for UITableViewController?

I have used many things but it doesn’t help me to set the image as background

  • How to search MKMapView with UISearchBar?
  • Inject a JavaScript code in Webview iOS
  • Reachability airplane mode (3G) vs. Wifi
  • How do I make UITableViewCell's ImageView a fixed size even when the image is smaller
  • jQuery Mobile is NOT triggering webViewDidStartLoad and webViewDidFinishLoad after leaving homepage in webView
  • Issue in Xcode 8.1 Storyboard layouts
  • UIImageView* bgView = [[[UIImageView alloc] initWithImage:
    [UIImage imageNamed:@"Default.png"]] autorelease];
    
    [tableView.backgroundView addSubview:bgView];
    

    And this

    [[self view] setAutoresizesSubviews:NO];
    
    UIView *backgroundView = [[UIView alloc] initWithFrame:self.view.frame];
    backgroundView.backgroundColor = 
      [UIColor colorWithPatternImage:
        [UIImage imageNamed:@"Default.png"]];
    
    self.tableView.backgroundView = backgroundView;
    self.tableView.backgroundColor = [UIColor clearColor];
    
    [backgroundView release];
    

    And

    self.navigationController.view.backgroundColor = 
      [UIColor colorWithPatternImage:
        [UIImage imageNamed:@"myImage.png"]];
    self.tableView.backgroundColor = [UIColor clearColor];
    

    None of it worked for me.

    8 Solutions Collect From Internet About “UITableViewController Background Image”

    sets the background fill mode

    [youTable setBackgroundView:
      [[UIImageView alloc] initWithImage:
        [UIImage imageNamed:@"bg.png"]]];
    

    sets the background mode tile

    [youTable setBackgroundColor:
      [UIColor colorWithPatternImage:
        [UIImage imageNamed:@"bg.png"]]];
    
    UIImage *image = [UIImage imageNamed:@"image.png"];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    
    UITableView *tableView = (UITableView*)tableViewController.view;
    tableView.backgroundView = imageView;
    [imageView release];
    

    This worked for me :

    tableView.backgroundView = 
      [[UIImageView alloc]initWithImage:
        [[UIImage imageNamed:@"background.png"] stretchableImageWithLeftCapWidth:0.0 
                                                topCapHeight:5.0]];
    

    If all the aforementioned suggestions don’t work, just do it this way (the approach I always use):

    1. Create a UIViewController subclass.
    2. In viewDidLoad add both an UIImageView and an UITableView as subviews.
    3. Configure the tableView and implement the delegate methods. Set the background image in the imageView.

    I think setting the backgroundView for a tableView can cause graphical errors (repeating images for each cell), so that’s why I use the approach described here.

    You can set the tableviews background view to a UIImageView instance (property backgroundView of UITableView).

    Following code is works well for me.
    Can you try following code:-

    UIImageView *bgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]];
    bgView.frame = self.view.frame;
    self.tableView.backgroundColor = [UIColor clearColor];
    self.tableView.backgroundView = bgView;
    [bgView release];
    

    This worked for me :

    self.tableView.backgroundView = nil;
    self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg2.png"]];
    

    or

    [self.tableView setBackgroundView:nil];
    [self.tableView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"bg2.png"]]];
    

    i was also not able to set the backgroundColor of UITableView because it’s a UITableViewController, my issue solved by this

    [self.tableView setBackgroundView:
      [[UIImageView alloc] initWithImage:
        [UIImage imageNamed:@"bg.png"]]];
    

    As suggested by the “WhiteTiger”.