web-dev-qa-db-fra.com

Comment définir la couleur d'arrière-plan d'UIPickerView sur iOS 7 à l'aide du SDK 7?

Comment définir la couleur d'arrière-plan de UIPickerViewsur iOS 7 à l'aide du SDK 7 et utiliser un sélecteur standard sur iOS 5 et 6? Il est transparent par défaut sur iOS 7.

16
Dmitry

J'ai ajouté UIView sous UIPickerView avec le code:

CGRect framePickerView = CGRectMake(0, self.view.frame.size.height, self.view.frame.size.width, 216);
pickerView = [[[UIView alloc] initWithFrame:framePickerView] autorelease];
pickerView.backgroundColor = [UIColor whiteColor];
[self.view addSubview:pickerView];
[pickerView addSubview:picker];

à la place, le code:

[self.view addSubview:picker];
8
Dmitry

Quel est le problème avec:

[picker setBackgroundColor:[UIColor whiteColor]];

Je suppose que vous avez une référence à la vue du sélecteur si vous l'invoquez, et c'est une sous-classe d'UIView donc backgroundColor est une propriété valide ...

40
Jesse

Je voulais l'écrire comme un commentaire, mais ce serait difficile à lire :) Sooo ....

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 44)]; // your frame, so picker gets "colored"
    label.backgroundColor = [UIColor lightGrayColor];
    label.textColor = [UIColor blackColor];
    label.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:18];
    label.text = [NSString stringWithFormat:@"%d",row];

    return label;
}

De plus, il ne doit pas être uniquement une étiquette, je pense que vous pouvez également y insérer d'autres sous-vues ... Cela fonctionne sur iOS7 pour autant que je sache pic here

9
Yanchi

Cela a fonctionné pour moi, dans iOS 7.1:

[[UIPickerView appearance] setBackgroundColor:[UIColor whiteColor];

Cela change la couleur de tous les cueilleurs. Vous pouvez mettre un conditionnel autour de lui si vous ne voulez que cela s'exécute sur des appareils avec iOS 7.

9
arlomedia

Même si j'ai défini UIPickerView.backgorundColor, mais j'avais une couleur de fond bizarre.

suppression la ligne suivante a résolu le problème:

UITextField.keyboardAppearance = .dark

Ou réinitialisez simplement keyboardAppearance par défaut, comme ceci:

UITextField.keyboardAppearance = .default
4
AamirR

Pour toute personne travaillant dans Swift et utilisant potentiellement plusieurs sélecteurs:

pickerView1.backgroundColor = UIColor.darkGrayColor()
pickerView2.backgroundColor = UIColor.greenColor()

Xcode 7.3

3
Diesel