La fuente es muy pequeña y difícil de leer para algunos, por lo que me gustaría que esté más cerca del tamaño de fuente utilizado en los botones debajo de ella.¿Hay alguna manera de cambiar el tamaño de la fuente del título en una hoja UIActionSheet?
Respuesta
Como Nimrod dijo que no puedes hacer esto con un método nativo. Puede consultar las subvistas de UIActionSheet, encontrar la buena y cambiar sus propiedades.
PERO
- Esta aplicación puede bloquearse en una futur actualización iOS
- Apple podría rechazar su aplicación
- UIActionSheet es un elemento natural de iPhone GUI y los usuarios están familiarizados con ella
SO
realmente se debe no cambia el tamaño de fuente utilizado .. Si este título UIActionSheet es importante que debe encontrar otra manera de mostrar al usuario ...
Puede cambiar la propiedad de fuente después de show method (como showFromBarButtonItem) como se muestra a continuación.
CGRect oldFrame = [(UILabel*)[[sheet subviews] objectAtIndex:0] frame];
UILabel *newTitle = [[[UILabel alloc] initWithFrame:oldFrame] autorelease];
newTitle.font = [UIFont boldSystemFontOfSize:17];
newTitle.textAlignment = UITextAlignmentCenter;
newTitle.backgroundColor = [UIColor clearColor];
newTitle.textColor = [UIColor whiteColor];
newTitle.text = @"My Title";
[sheet addSubview:newTitle];
[sheet release];
Bueno, hay una manera de hacerlo - he creado una subclase UIActionSheet en github llamado LTActionSheet
Como han mencionado otros, todo tipo de cosas terribles pueden suceder si lo usa (no lo he hecho en código de envío ... aún :-)) Si lo usa en una aplicación que es aceptada, ¡avísenos!
@ respuesta de user651909 funciona muy bien para mí, aunque sólo para añadir algunos detalles más:
tuve que initWithTitle:@" "
(nótese la cadena no vacía) al crear el UIActionSheet
para que la vista tenía un poco de espacio en la parte superior para cualquier texto para comenzar. Luego, después de hacer un [popupQuery showInView:self.view];
, agregué su sugerencia para que se inicializara el marco anterior. Por último, añadí:
[newTitle sizeToFit];
newTitle.frame = CGRectMake(oldFrame.origin.x,
oldFrame.origin.y,
oldFrame.size.width,
newTitle.frame.size.height);
Esto era necesario ya que la altura de la oldFrame
's era demasiado pequeño para mi fuente más grande (tamaño 20), haciendo que algunas letras para obtener recortados en la parte inferior. Además, incluso con este ajuste, si hace que el texto sea demasiado grande, digamos mayor que boldSystemFontOfSize: 26, el texto se ejecutará demasiado cerca o dentro de los botones a continuación. Cambiar el tamaño del marco de la hoja no ayuda, ya que los botones parecen estar anclados en la parte superior.
Presumiblemente haciendo
CGRect oldFrame = [(UILabel*)[[sheet subviews] objectAtIndex:0] frame];
no viola la política de no usar cualquier API interna de Apple, ¿verdad?
UIActionSheet *as = [[UIActionSheet alloc] initWithTitle:@"SpecifySearch"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"UncategorizedContacts" , nil];
//as.actionSheetStyle = UIActionSheetStyleBlackTranslucent;
[as showFromTabBar:self.tabBarController.tabBar];
if(as.subviews.count > 0
&& [[as.subviews objectAtIndex:0] isKindOfClass:[UILabel class]]){
UILabel* l = (UILabel*) [as.subviews objectAtIndex:0];
[l setFont:[UIFont boldSystemFontOfSize:20]];
}
[as release];
Al igual que conecon ha demostrado que puede obtener un puntero y manipularlo. Si he entendido bien lo que está tratando de hacer es:
[sheet showInView:[self.view window]];
UILabel *title = [[sheet subviews] objectAtIndex:0];
title.font = [UIFont boldSystemFontOfSize:20];
title.textAlignment = UITextAlignmentCenter;
Espero que esto ayude!
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"Share" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Facebook", @"Twitter",nil];
[sheet showInView:self.view];
if (![[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
CGRect labelFrame = [(UILabel*)[[sheet subviews] objectAtIndex:0] frame];
[[[sheet subviews] objectAtIndex:0] removeFromSuperview];
UILabel *newTitle = [[UILabel alloc] initWithFrame:labelFrame];
newTitle.font = [UIFont boldSystemFontOfSize:17];
newTitle.textAlignment = UITextAlignmentCenter;
newTitle.backgroundColor = [UIColor clearColor];
newTitle.textColor = [UIColor whiteColor];
newTitle.text = @"Share";
[sheet addSubview:newTitle];
}
Desde el UIActionSheet Class Reference:
UIActionSheet no está diseñado para ser una subclase, ni debe añadir vistas a su jerarquía. Si necesita presentar una hoja con más personalización que la proporcionada por la API UIActionSheet, puede crear la suya propia y presentarla de manera modal con
presentViewController:animated:completion:
.
- 1. cambiar el tamaño del texto (tamaño de fuente) al cambiar el tamaño de la ventana?
- 2. Cambiar la fuente del título UINavigationController
- 3. ¿Hay alguna manera de determinar el tamaño físico del monitor?
- 4. ¿Hay alguna manera de cambiar automáticamente el tamaño de las imágenes de MediaWiki dependiendo del tamaño de la pantalla?
- 5. Barra de navegación Título Tamaño de fuente
- 6. ¿Hay alguna manera de cambiar el color de fuente de Jradiobuttons usando el UImanager
- 7. Ajuste la posición y el tamaño de fuente del título de la leyenda en ggplot2
- 8. ¿Hay alguna manera fácil de adjuntar una fuente en Eclipse?
- 9. ¿Cómo cambiar la secuencia del botón en UIActionsheet en iPhone?
- 10. Cambiar el tamaño de la fuente del título de la leyenda en el diagrama Python Rose Rose/Polar
- 11. ¿Cambiar el tamaño de la fuente macvim?
- 12. La manera más fácil de cambiar la fuente y el tamaño de fuente
- 13. ¿Hay alguna manera de cambiar la imagen del icono dependiendo del nivel de zoom? (leaflet.js)
- 14. Lienzo HTML5: ¿hay alguna manera de cambiar el tamaño de la imagen con el remuestreo del "vecino más cercano"?
- 15. Cambiar el tamaño de fuente del código en WebStorm IDE
- 16. configuración de fuente y tamaño de fuente del texto de la barra de título de una UITableViewController
- 17. Cómo cambiar el tamaño de la fuente en EditText
- 18. ¿Cómo cambiar el tamaño de fuente del gráfico de Google?
- 19. ¿Hay alguna manera de cambiar el propietario de un JDialog?
- 20. Cambiar tamaño de fuente del terminal con C++
- 21. ¿Hay alguna manera de cambiar el modo predeterminado de vim?
- 22. ¿Cómo agregar un botón a una hoja de UIActionSheet existente?
- 23. ¿Cómo cambiar el tamaño de la fuente del nombre del elemento del controlador de la barra de pestañas?
- 24. ¿Cómo cambiar tamaño de fuente en direct.label?
- 25. Cambiar el tamaño predeterminado de la fuente XTerm en Cygwin
- 26. ¿Hay alguna manera de obtener el tamaño de una variable de PHP en bytes?
- 27. ¿Cómo cambiar la fuente y el tamaño de fuente de una etiqueta de entrada HTML?
- 28. ¿Hay alguna manera de cambiar la barra de direcciones del navegador sin actualizar la página?
- 29. QTabWidget establece la fuente del título de una sola pestaña
- 30. ¿Cómo cambiar el tamaño de la fuente en jqGrid?
Probablemente no haya una forma admitida de hacerlo. Probablemente pueda obtener una referencia a la vista de la hoja de acción de alguna manera, luego recorrerla para encontrar el título UILabel y editar esa vista directamente, pero eso podría romperse en el futuro si la implementación del sistema operativo de la hoja de acción cambia. – Nimrod