Iphone: применение растягиваемых изображений к кнопке отключает его - PullRequest
0 голосов
/ 06 июля 2011

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

- (void)enableBackgroundImageStrechingWithLeftCapWidth:(float)leftCapWidth withTopCapHeight:(float)topCapHeight;
{

    UIImage *backgroundimageNormal = [self backgroundImageForState:UIControlStateNormal];

    if (backgroundimageNormal != nil) 
    {
        UIImage *stretchImage = [backgroundimageNormal stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:topCapHeight];
        [self setBackgroundImage:stretchImage forState:UIControlStateNormal];
    }

    UIImage *backgroundimageSelected = [self backgroundImageForState:UIControlStateSelected];

    if (backgroundimageSelected != nil) 
    {
        UIImage *stretchImage = [backgroundimageSelected stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:topCapHeight];
        [self setBackgroundImage:stretchImage forState:UIControlStateSelected];
    }

    UIImage *backgroundimageHighlighted = [self backgroundImageForState:UIControlStateHighlighted];

    if (backgroundimageHighlighted != nil) 
    {
        UIImage *stretchImage = [backgroundimageHighlighted stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:topCapHeight];
        [self setBackgroundImage:stretchImage forState:UIControlStateHighlighted];
    }

    UIImage *backgroundimageDisabled = [self backgroundImageForState:UIControlStateDisabled];

    if (backgroundimageDisabled != nil) 
    {
        UIImage *stretchImage = [backgroundimageDisabled stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:topCapHeight];
        [self setBackgroundImage:stretchImage forState:UIControlStateDisabled];
    }
}

Кажется, работает, за исключением того, что кнопка теперь не активируется

Ответы [ 2 ]

0 голосов
/ 21 мая 2012

Если у вас нет пользовательских изображений для выделенных / отключенных состояний, но вы используете UIButton для применения эффекта выделения / отключенного, тогда [self backgroundImageForState: UIControlStateHighlighted] НЕ вернет nil.Вместо этого он вернет указатель на изображение нормального состояния.

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

0 голосов
/ 06 июля 2011

Похоже, что выделенное состояние вызывает проблему!

Я удалил выделенный блок, и он работает нормально?

...