2009-09-10 8 views
5

Ich versuche tableviewcell 's backgroundColor s mit colorwithPatternImage zu geben und es funktioniert nicht wie erwartet. Die Dokumentation sagt nichts darüber aus, nur ein Muster gleichzeitig verwenden zu können.UIColor colorWithPatternImage verwendet nur ein Bild

Sagen, ich habe 3 Zeilen und ich den Hintergrund wie so:

Cell1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"red.png"]]; 

Cell2.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"green.png"]]; 

Cell3.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"blue.png"]]; 

Alle drei Reihen rot sein würde. Es ist, als ob eine globale Farbe zurückgegeben wird.

colorWithPatternImage gibt für jeden Aufruf kCGColorSpaceModelPattern 1 zurück, egal welches Bild übergeben wird. Wenn es wahr ist, dass Sie nur 1 globales Muster gleichzeitig haben, dann sollte die Farbe die letzte sein, mit anderen Worten blau.

Das macht keinen Sinn. Hat jemand irgendwelche Insiderwissen darüber, was Apple hier macht?

BEARBEITEN Ich benutze sogar ein anderes Muster in einer völlig separaten Ansicht und es betrifft immer noch die anderen Ansicht Muster. Ich bin überzeugt, obwohl die Dokumentation nicht besagt, dass Sie auf ein UIColor Bildmuster zu einem Zeitpunkt beschränkt sind. Traurig.

Antwort

1

Ich kann diese Was tun sehen, ist nicht oder nicht mehr wahr. Ich habe hier ein paar UITableViewCells, wo jedes ein anderes backgroundImage hat, ohne irgendwelche Probleme.

+0

danke für das Update :) – Brenden

5

Was ist Cell1? Wo (in welcher Methode) setzen Sie diese?

Ich würde sagen, dass Sie sollten dies alles in

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) {  
     // create cell 
    } 

    // Set up the cell... 

    // set up a background color 
    if (something) 
     cell.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"red.png"]]; 
    else (another) 
     cell.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"green.png"]]; 
    else 
     cell.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"blue.png"]]; 
} 
+0

Ich mache es in dieser Methode. Daher wird eine Zelle zurückgegeben, sodass die Tabelle sie anzeigen kann. Cell [1-3] sind eigentlich jeweils eine Case-Anweisung in einem Switch, – Brenden