Фон кнопки на ios7 сжимается, ios6 ok

Я просто обновился до XCode 5. Кнопки в моем приложении выглядят ОК в IB и на устройстве iOS 6, но на устройстве iOS 7 они выглядят так (они должны покрывать все черное пространство):

enter image description here

У меня есть изображения как для сетчатки, так и для сетчатки.

Я понятия не имею, что делать, потому что я ничего не менял в коде или IB.

EDIT:

Теперь я узнал, что если я изменяю тип кнопки с пользовательского на систему и устанавливаю ее фон вместо своего изображения, я получаю правильный размер, но я получаю какую-то странную тень над ним.

EDIT2:

Теперь я установил цвет оттенка кнопки, чтобы "очистить цвет", и все выглядит нормально (тень исчезла). Все еще не уверен, что изменилось в iOS 7, связанной с этим.

Ответ 1

В руководстве по человеческому интерфейсу конкретно описывается, как работают UIButtons в системном стиле по умолчанию. В нем объясняется, что кнопка системы:

  • По умолчанию не имеет границы или фона...
  • Поддержка пользовательских украшений, таких как рамка или фоновое изображение (до добавьте пользовательский внешний вид, используйте кнопку типа UIButtonTypeCustom и поставьте пользовательское фоновое изображение).

Однако страница UIButton HIG предоставляет немного больше информации, в частности:

Если вы не указали явно цвет оттенка, кнопка наследует цвет его оттенков.

Это объясняет, почему после изменения вашей кнопки на UIButtonTypeSystem вам вдруг придется reset (удалить) цвет оттенка. В iOS7 (почти) все имеет цвет оттенка. A UIButtonTypeSystem более подходит для ваших нужд сейчас в iOS7 (немного боль, если есть много, чтобы изменить вручную, хотя...)

Что касается того, почему кнопки уменьшаются в iOS7... Я согласен с комментарием @Joseph относительно фреймов просмотра UIViewController в iOS7. Вероятно, у вас есть определенное отношение к размеру кнопок, которые не играют хорошо, когда кадр ViewController изменяется в iOS7 (см. этот вопрос SO для обсуждения). Как вам посоветовали, ознакомьтесь с руководство по переходу iOS7, чтобы узнать, идет ли что-то, что вы делаете в IB, против нового iOS7-зерна.

Ответ 2

[button setBackgroundColor:[UIColor colorWithRed:(255.0/255.0) green:(180.0/255.0)];.

Это правильный код для фона, и если вы используете изображение, используйте

[UIImage imageNamed:@".png"];