rightBarButtonItem botón de información, sin espacio a la derecha
-
02-10-2019 - |
Pregunta
he puesto un UIViewController
para mostrar un botón de información sobre el derecho a su UINavigationItem
como esto:
UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[infoButton addTarget:self action:@selector(toggleAboutView) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease];
Esto funciona perfectamente, pero el único problema es que me quedo con poco o ningún espacio a la derecha del botón, que se parece bastante feo:
¿Hay alguna manera para que el botón se mueve alrededor del 5 píxeles desde el lado derecho?
Gracias.
Solución
infoButton.contentEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 10);
Otros consejos
Trate de establecer infoButton.contentEdgeInsets (o imageEdgeInsets); algo así como
infoButton.contentEdgeInsets = (UIEdgeInsets){.right=10};
No estoy seguro si funciona para los botones del "sistema", pero que podría hacerlo.
Si esto no funciona, la forma más fácil es probablemente para pegarlo dentro de un UIView.
EDIT: Es de suponer que las llamadas de la barra de herramientas [customView sizeThatFits:blah]
para averiguar qué tan grande la vista "quiere ser". El código anterior se supone que significa "añadir un borde derecho de 10 píxeles inserción", que para un botón normal (personalizado) también hace que el tamaño más grande por 10 píxeles.
Parece que UIButton devuelve un tamaño fijo para el botón estándar de información, haciendo caso omiso de las inserciones. Su código "trabaja" al afectar los contentRectForBounds: y imageRectForContentRect: métodos, que cambia cuando se dibuja el icono, pero que en realidad no cambia el tamaño del botón. Sospecho que el icono está dibujando fuera del botón, lo que puede significar que el rect "palpables" está mal (pero barras de herramientas parecen aumentar las rectas táctiles para UIBarButtonItems normales, así que tal vez no importa).