2010-08-12 10 views

Répondre

5

UIDatePicker contient une sous-vue. Cette sous-vue, à son tour, contient 15 autres sous-vues qui forment l'apparence de UIDatePicker. Le premier et le dernier d'entre eux sont l'arrière-plan, afin de le rendre transparent juste les désactiver et définir la couleur d'arrière-plan principal à sous-vue clearColor:

// create the picker 
UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 40, 320, 320)]; 

// add it to some view first 
[actionSheet addSubview:datePicker]; 
[datePicker release]; 

// clear the background of the main subview 
UIView *view = [[datePicker subviews] objectAtIndex:0]; 
[view setBackgroundColor:[UIColor clearColor]]; 

// hide the first and the last subviews 
[[[view subviews] objectAtIndex:0] setHidden:YES]; 
[[[view subviews] lastObject] setHidden:YES]; 
+0

Est-ce que ça va être accepté par Apple? Il semble que ce soit en s'appuyant sur des détails de mise en œuvre internes qui pourraient changer dans les futures versions. –

+0

Bien sûr, l'implémentation interne de UIDatePicker pourrait être modifiée à l'avenir par Apple. En ce qui concerne le processus de révision de l'application, il existe plusieurs éléments de l'interface utilisateur qui ne permettent pas de modifier leur arrière-plan (comme UIDatePicker, UISearchBar, etc.), mais dans certaines applications ils sembleraient maladroits avec l'arrière-plan par défaut. Tandis que ce type de contrôle n'est pas une bonne pratique, Apple connaît les limitations des éléments de l'interface utilisateur et autorise les applications à contenir des contrôles personnalisés s'ils sont esthétiques. – Amoneron

+0

Je vais devoir y penser. Cela me semble trop dangereux pour mon application. Nous n'avons pas de contrat de maintenance avec le client, et nous devons donc espérer qu'il reste le plus longtemps possible sans être brisé par les changements de plate-forme. Il est peut-être correct de déranger la mise en œuvre interne, mais il semble plus probable que la prochaine version d'iOS se brise, donc je ne sais pas si nous pouvons prendre le risque. Merci pour les commentaires, en tout cas. –