Domanda

Ho osservato che UIPicker rimane sempre in colore nero,

C'è un modo per cambiare il colore di UIPicker & di essa l'indicatore di selezione?

Grazie per avermi aiutato.

È stato utile?

Soluzione

Presumo tutto quello che desidera cambiare il colore del bordo del selettore, non di regione al centro con cui l'utente interagisce. In questo caso, effettuare le seguenti operazioni:

Crea 4 UIViews "coprire" e aggiungerli direttamente al UIPicker, come in:

[picker addSubview: coverView];

Posizione questi punti di vista sopra le righe, in basso, a sinistra ea destra del confine selettore. (Avrete bisogno di sperimentare con le dimensioni.) Impostare il backgroundColor dei coverViews al colore che si desidera, e regolare l'alfa per ottenere l'ombreggiatura gradiente dal selettore. Anche in questo caso, l'operazione potrebbe richiedere un po 'di sperimentazione.

L'alternativa sarebbe quella di creare un unico grande coverView che copre l'intero selettore, e sovrascrivere il - (UIView *) hitTest: (CGPoint) il punto withEvent: (UIEvent *) metodo di evento in modo che la vista di copertura non intercettare i tocchi significato per il selettore.

Altri suggerimenti

È possibile creare i propri raccoglitori personalizzati, controllare il progetto di esempio UICatalog sul sito mele, mostrano come fare un selettore personalizzato, potrebbe aiutare a https://developer.apple.com/iphone/library/samplecode/UICatalog/

creare una singola immagine sovrapposizione come Amagrammer suggerito, ma invece di aggiungere alla vostra vista come immagine, inserirlo come un pulsante. Quindi disattivare l'interazione sul pulsante e il selettore riceverà gli eventi di tocco senza la necessità di intercettare o ignorare qualsiasi cosa.

Si può fare questo con l'aggiunta di 5 ImageView anche. La prima è di dimensioni "indicatore di selezione" e lo mise esattamente sopra "indicatore di selezione". Ora cambiare alpha che di ImageView a 0,2 o quello che volete e anche aggiungere immagine / colore secondo la vostra scelta. Ora, vedrete la vostra abitudine "indicatore di selezione". Inoltre, la stessa cosa si può fare per i bordi. Aggiungere ogni ImageView ai quattro lati del pickerView e renderlo di dimensioni pari a dimensione del bordo. Ora riempire l'immagini / colore che si desidera in quel ImageView.

Questa è la soluzione migliore che ho trovato

http://www.inexika.com/blog/Customizing-UIPickerView-UIDatePicker

È necessario creare un nuovo UIView con un UIImageView al suo interno e quindi impostare che come accessori per la cella. Quindi è necessario creare un'immagine, proprio come l'accessorio di default ma nel colore desiderato.

UIView* accessoryView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 24, 50)];
UIImageView* accessoryViewImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"NEWIMAGE.png"]];
accessoryViewImage.center = CGPointMake(12, 25);
[accessoryView addSubview:accessoryViewImage];
[cell setAccessoryView:accessoryView];
[accessoryViewImage release];
[accessoryView release];

per cambiare il colore del testo Ecco la soluzione

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {

CGRect imageFrame = CGRectMake(0.0, 0.0, 15, 15);
UIImageView *label = [[[UIImageView alloc] initWithFrame:imageFrame] **autorelease**];

if (row == 0)
{
    label.backgroundColor = [UIColor redColor];
}
if (row == 1)
{
    label.backgroundColor = [UIColor blueColor];
}
if (row == 2)
{
    label.backgroundColor = [UIColor blackColor];
}   
return label;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top