Попробуйте установить infoButton.contentEdgeInsets (или imageEdgeInsets);что-то вроде
infoButton.contentEdgeInsets = (UIEdgeInsets){.right=10};
Я не уверен, работает ли он для "системных" кнопок, но это может быть.
Если это не сработает, возможно, самый простой способ - это вставить еговнутри UIView.
РЕДАКТИРОВАТЬ: Предположительно, панель инструментов вызывает [customView sizeThatFits:blah]
, чтобы выяснить, насколько большой вид "хочет быть".Вышеприведенный код должен означать «добавить 10-пиксельную правую вставку», что для обычной (пользовательской) кнопки также увеличивает размер на 10 пикселей.
Похоже, что UIButton возвращает фиксированный размер длястандартная кнопка информации, игнорируя любые вставки.Ваш код «работает», воздействуя на методы contentRectForBounds: и imageRectForContentRect:, которые изменяют место рисования значка, но фактически не изменяют размер кнопки.Я подозреваю, что значок отображается за пределами кнопки, что может означать, что «сенсорный» прямоугольник неправильный (но панели инструментов, кажется, увеличивают сенсорные поля для обычных UIBarButtonItems, поэтому, возможно, это не имеет значения).