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:

infobutton

¿Hay alguna manera para que el botón se mueve alrededor del 5 píxeles desde el lado derecho?

Gracias.

¿Fue útil?

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).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top