wake-up-neo.com

iPhone - Hintergrund auf UITableViewController einstellen

Gibt es eine Möglichkeit, eine Hintergrundansicht auf einem UITableViewController festzulegen?

Ich versuche es mit dem Code, den ich auf einer UIViewController verwende, aber die Ansicht enthält alle Inhalte der Tabellenansicht. Wenn ich die Hintergrundansicht in cellForRowAtIndexPath-method einfüge, wird sie überhaupt nicht angezeigt. Hat jemand das schon einmal gemacht oder hat eine Idee, wie es gemacht werden kann? Hier ist der Code, den ich verwende:

UIImage *image = [UIImage imageNamed: @"background.jpg"];
UIImageView *backImage = [[UIImageView alloc] initWithImage: image];
[self.view addSubview: backImage];
[self.view sendSubviewToBack: backImage];
50
Hans Espen

(Dies ist im Grunde dasselbe wie bei der Lösung von Hans Espen, verwendet jedoch zur Vereinfachung Bequemlichkeit.)

Fügen Sie dies in Ihre -[UITableViewControllerSubclass viewDidLoad]-Methode ein:

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

Es ist sinnlos, einige Autoreleases in einer viewDidLoad-Methode zu vermeiden, da sie nur selten aufgerufen wird (wenn die Ansicht tatsächlich geladen wird) und daher die Performance kaum beeinträchtigen wird.

N.B. Sie sollten immer PNG-Bilder auf dem iPhone verwenden, nicht JPEG oder ein anderes Format.

68
Nick Forge

Ich weiß, es ist lange her, aber nur fürs Protokoll ... Ich denke, ich habe mit UITableView.backgroundView eine bessere Lösung gefunden:

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"lisbon.png"]];

self.tableView.backgroundView = imageView;
[imageView release];

Ich habe es mit einer Bildgröße von 320x480 auf dem iPhone ausprobiert und funktioniert einwandfrei (ich habe es auch mit .jpg versucht).

72
Frade

Eigentlich habe ich es funktioniert! :)

NSString *backgroundPath = [[NSBundle mainBundle] pathForResource:@"background" ofType:@"jpg"];
UIImage *backgroundImage = [UIImage imageWithContentsOfFile:backgroundPath];
UIColor *backgroundColor = [[UIColor alloc] initWithPatternImage:backgroundImage];
self.tableView.backgroundColor = backgroundColor; 
[backgroundColor release];
6
Hans Espen

Für Swift verwenden Sie dies,

self.tableView.backgroundView = UIImageView(image: UIImage(named: "backgroundImage.png"))
5
Zaid Pathan

In C # für einen statischen UITableViewController mit Abschnitten können Sie Folgendes verwenden:

using System;
using Foundation;
using UIKit;
using CoreGraphics;
using CoreAnimation;

namespace MyNamespace
{
    public class CustomTableViewController : UITableViewController
    {
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            SetGradientBackgound();
        }

        private void SetGradientBackgound()
        {
            CGColor[] colors = new CGColor[] {
                UIColor.Purple.CGColor,
                UIColor.Red.CGColor,
            };

            CAGradientLayer gradientLayer = new CAGradientLayer();
            gradientLayer.Frame = this.View.Bounds;
            gradientLayer.Colors = colors;
            gradientLayer.StartPoint = new CGPoint(0.0, 0.0);
            gradientLayer.EndPoint = new CGPoint(1.0, 1.0);

            UIView bgView = new UIView()
            {
                Frame = this.View.Frame
            };
            bgView.Layer.InsertSublayer(gradientLayer, 0);

            UITableView view = (UITableView)this.View;
            view.BackgroundColor = UIColor.Clear;
            view.BackgroundView = bgView;
        }

        // Setting cells background transparent
        public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
        {
            var cell = base.GetCell(tableView, indexPath);
            cell.BackgroundColor = UIColor.Clear;
            return cell;
        }

        // Setting sections background transparent
        public override void WillDisplayHeaderView(UITableView tableView, UIView headerView, nint section)
        {
            if (headerView.GetType() == typeof(UITableViewHeaderFooterView))
            {
                UITableViewHeaderFooterView hView = (UITableViewHeaderFooterView)headerView;
                hView.ContentView.BackgroundColor = UIColor.Clear;
                hView.BackgroundView.BackgroundColor = UIColor.Clear;
            }
        }

    }
}

Das Ergebnis kann so aussehen:

 Setting TableViewController grading background

0
gts
self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImage.png"]];
0