2012-12-30 1 views
1

Я пытаюсь создать очень тонкий UIButton с размером = CGSizeMake(75, 23), чтобы точно соответствовать настроенному фоновому изображению. И я хочу, чтобы кнопка имела название.iOS/Obj-C: Удаление прописных букв из заголовков UIButton

После того, как я позвонил setTitle:forState:, размер кнопки изменился, чтобы получить отступы вокруг заголовка, завинчивая фоновое изображение (т. Е. Заставляя его петь очень неприлично). Я установил шрифт заголовка довольно небольшого размера в подкатегории UILabel, так что это не тот шрифт, который вызывает проблему, но дополнение. Таким образом, я хотел бы удалить это дополнение. Значения по умолчанию для contentEdgeInsets, imageEdgeInsets и titleEdgeInsets свойств UIButton - это все UIEdgeInsetsZero, поэтому я предполагаю, что заполнение находится где-то в подвале UILabel. Если это так, я думаю, что могу устранить это путем подкласса UILabel и переопределить textRectForBounds:limitedToNumberOfLines:, но я не уверен (и я был бы рад услышать от того, кто это пробовал). В любом случае, я ищу более простой выход.

Я искал и искал и ничего не нашел.

Любые предложения?

+0

Пробовали ли вы установить рамку кнопки после того, как вы установили заголовок? – lnafziger

+0

Вы используете PNG для кнопок? Попробуйте добавить ярлык в файл PNG, тогда вы можете избежать любого дополнения, которое вызывает ярлык. Это, конечно же, означает, что вы теряете способность менять метки кнопок на лету. –

+0

@lnafziger yep, к сожалению, безуспешно. –

ответ

0

Это сработает.

Я рекомендовал этот инструмент прежде, но это чудотворец :-)

OBShapedButton

Он будет заботиться о вашей проблеме прозрачности Это должно решить вашу проблему :-)

+0

Спасибо @JeffKranenburg, 'OBShapedButton' кажется хорошим решением, и он решает проблему прозрачности, но я буду продолжать реализовывать его, если я не смогу найти другое решение, поскольку, вероятно, будет какая-то потеря производительности (будет более двадцати экземпляры этой кнопки на просмотр в любой момент времени). –

+0

Я понимаю, что вы имеете в виду - у меня есть приложение, и он использует 8 экземпляров его на стартовом экране. Ничего не заметили. Но я предполагаю, что нужно что-то дать и взять. Даже если вы реализуете его сейчас, пока не найдете лучшее решение. –