2012-05-18 3 views
4

У меня возникла странная проблема. У меня есть UIButton с UIButtonTypeCustom.UIButton с прозрачным фоном изображения без рисования прозрачным

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

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

UIButton issue

Вот изображение Я использую, чтобы показать, что он действительно имеет прозрачность:

Image used

Вот мой код:

UIButton *nextButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
nextButton.backgroundColor = [UIColor clearColor]; 
nextButton.frame = CGRectMake(0, 0, 30, 30); 
[nextButton setBackgroundImage:[[UIImage imageNamed:@"ButtonBackground.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:5] forState:UIControlStateNormal]; 

Форстате: UIControlStateHighlighted]; [self addSubview: nextButton];

Я использовал то же изображение в другом месте, чтобы рисовать и не имел проблемы с прозрачностью.

UPDATE: Добавление других прозрачных изображений аналогичным образом увеличивает интенсивность альфа. Хотя они прозрачны, они кажутся более темными и, следовательно, менее прозрачными. Опять же, работает отлично в другом месте.

UPDATE 2: Хуже того, я только что создал новый проект с тем же изображением, который вытащил из другого проекта, создал кнопку и не имел проблем с правильной отображением кнопки. Как невероятно раздражает!

+0

вы пробовали установки свойства изображения, а не свойство BackgroundImage? это имеет значение тогда? –

+0

См. Ниже беседы. – runmad

+0

Возможно, вам просто нужна была чистая сборка. У вас, должно быть, был старый образ, который был менее прозрачным и изменил его на новый, и он сохранил ссылку на старый. По какой-то причине XCode кажется цепляющимся к удаленным файлам. – RileyE

ответ

0

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

Также вы должны установить изображение, а не фоновое изображение.

Если ничто из этого не помогает, то Apple может просто неправильно отображать ваше изображение. Попробуйте создать CALayer и установите его содержимое на свое изображение и посмотрите, работает ли это правильно.

+0

Вы не можете растянуть изображение на UIButton, поэтому мне нужно установить фоновое изображение, которое должно быть хорошо. В любом случае ни один из них не решает проблему. – runmad

+0

Хммм. Раньше у меня никогда не было этой проблемы. Почему вы не можете просто воссоздать изображение в нужном размере? Или просто заново создайте его, масштабируя изображение в коде, прежде чем добавлять его в свою кнопку. Попробуйте масштабировать его до того, как вы добавите его на свою кнопку, а затем добавьте его в свою кнопку в качестве изображения, а не в фоновое изображение. – RileyE

+0

Добавление, это изображение не решает проблему, я боюсь. – runmad

0

попробовать это

UIButton *nextButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

    nextButton.frame = CGRectMake(0, 0, 30, 30); 

    nextButton.alpha=0.5f; 

    [nextButton setBackgroundColor:[UIColor clearColor]]; 

    [nextButton setOpaque:NO]; 

    [nextButton setBackgroundImage:[UIImage imageNamed:@"ButtonBackground.png"] 
          forState:UIControlStateNormal]; 
+0

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

+0

ButtonBackground.png должен быть прозрачным one.pls снова проверить .. –

+0

Опять же, это не рисунок с той же прозрачностью, что и фактическое изображение. – runmad

Смежные вопросы