Предотвращение изменения размера UIImage для UIButton - PullRequest
5 голосов
/ 03 января 2012

У меня есть UIButton без текста и 2 изображения, которые я хотел бы использовать (одно для нормального состояния, а другое для выбранного состояния). Изображения меньше, чем размер кнопки.

Как мне обеспечить, чтобы ни одно из изображений не масштабировалось при рисовании кнопки? Установка свойств imageView корректно изменяет масштаб только для нормального состояния, но не для выбранного.

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

    [button setImage:imageNormal forState:UIControlStateNormal];
    [button setImage:imageSelected forState:UIControlStateSelected];

    // this shows the correct scale in normal mode but not when button is tapped
    button.imageView.contentScaleFactor = 1.0;
    button.imageView.contentMode = UIViewContentModeCenter;

1 Ответ

10 голосов
/ 03 января 2012

Если у вас есть высота и ширина изображения, вы можете сделать это:

int topBottom = (button.frame.size.height - imageHeight) / 2;
int leftRight = (button.frame.size.width - imageWidth) / 2;

button.imageEdgeInsets = UIEdgeInsetsMake(topBottom,leftRight,topBottom,leftRight);

И тогда вам не нужно устанавливать contentMode / scalefactor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...