2012-06-27 14 views
6

Estoy haciendo un UITableView con celdas expandibles/colapsables para la aplicación ios. Puse un UITableViewCellAccessoryDisclosureIndicator en estas celdas pero me gustaría hacer que la flecha se dirija hacia arriba/abajo cuando la celda se expande/contrae.Cómo rotar UITableViewCellAccessoryDisclosureIndicator?

Descubrí que es posible hacer un botón con una imagen personalizada y cambiar el botón según el estado de la celda, pero me parece sucio porque no necesito un botón y tengo que agregar 2 imágenes al proyecto (bueno, no es tan grande, pero de todos modos).

Entonces, ¿no debería ser mejor simplemente rotar el UITableViewCellAccessoryDisclosureIndicator existente? y si es así, ¿cómo puedo hacer eso?

+0

Discusión completa .. http://stackoverflow.com/questions/13836606/use-table-view-disclosure-indicator-style-for-uibutton-ios – Fattie

Respuesta

8

Esto no es exactamente lo que quieres, pero esto es lo primero que pensé. En primer lugar, crear una instancia de un botón de tipo UIButtonTypeDetailDisclosure:

UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 

A continuación, gire el botón 90 grados:

CGAffineTransform rotationTransform = CGAffineTransformIdentity; 
rotationTransform = CGAffineTransformRotate(rotationTransform, DegreesToRadians(90)); 
button.transform = rotationTransform; 

Por último, utilice el botón que la accessoryView:

cell.accessoryView = button; 

Espero que ayude .

+0

¿El uso de DegressToRadians requiere algo especial? Mi aplicación ya no compila ... Símbolos indefinidos para la arquitectura i386: "_DegreesToRadians", a los que hace referencia de: – Alexis

+1

Heh, pensé que uno estaba predefinido. '#define DegreesToRadians (x) (M_PI * x/180.0)' funcionará para esto. Puedes ponerlo en la parte superior de tu archivo. Si lo usa en más de un archivo, debe crear un encabezado Conversiones.h y colocar la definición allí. –

+0

sí, ¿por qué no usar radianes directamente? M_PI/2 está bien. – Alexis