2008-10-22 10 views
47

Sie können kein UIWebView als Hintergrund-Layer in meine NIB-Datei einfügen. Wie kann ich einer iPhone-App ein sich wiederholendes Hintergrundbild hinzufügen (wie das Cord-Look im Hintergrund eines gruppierten UITableView))Hintergrundbild in der nativen iPhone-App wiederholen

Muss ich ein Bild in der Größe des iPhone-Bildschirms erstellen und manuell mit Kopieren und Einfügen wiederholen?

Antwort

160

Anscheinend ist ein UIColor nicht unbedingt eine einzelne Farbe, sondern kann auch ein Muster sein. Verwirrenderweise wird dies im Interface Builder nicht unterstützt.

Stattdessen setzen Sie die backgroundColor der Ansicht (sagen wir in -viewDidLoad) mit der Convenience-Methode + colorWithPatternImage: und übergeben Sie ihr ein UI Image. Zum Beispiel:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"gingham.png"]]; 
} 

Vergessen Sie natürlich nicht, die Bilddatei zu Ihrem Anwendungspaket hinzuzufügen.

Es gibt auch einige integrierten Hintergrundmuster "Farben":

  • groupTableViewBackgroundColor
  • viewFlipsideBackgroundColor

Da die global für alle iPhone-Anwendungen verwendet werden, entstehen Ihnen die zweischneidiges ein OS-Update, das das Aussehen und Verhalten Ihrer Anwendung aktualisiert (indem Sie ihr ein neues, frisches Aussehen verleihen, das möglicherweise nicht richtig funktioniert).

Zum Beispiel:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]; 
} 
+1

Wow ich darüber nicht kannte. Toller Tipp! – Lounges

+0

Würden Sie bitte ein Code-Snippet zur Verwendung von groupTableViewBackgroundColor bereitstellen? Vielen Dank! –

+0

Gut zu erwähnen, dass colorWithPatternImage PNG24 nicht zu unterstützen scheint. –

2

Sie einen Blick auf die QuartzDemo iPhone Beispielcode von Apple, speziell QuartzImageDrawing.m haben sollte. Sollte den folgenden Methodenaufruf verwenden.

CGContextDrawTiledImage 
1

sollten Sie colorWithPatternImage verwenden