2012-04-25 3 views
1

У меня есть табличное представление, и я хочу настроить кнопку accessview. Для этого у меня есть пользовательское изображение PNG с полупрозрачными пикселями.Как добавить конкретный режим наложения в пользовательский AccessoryView

UIButton *myAccessoryButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)]; 
[myAccessoryButton setUserInteractionEnabled:YES]; 

[myAccessoryButton setBackgroundColor:[UIColor clearColor]]; 

[myAccessoryButton setImage:[UIImage imageNamed:@"accessory_btn"] forState:UIControlStateNormal]; 
[myAccessoryButton addTarget: self 
         action: @selector(accessoryButtonTapped:withEvent:) 
      forControlEvents: UIControlEventTouchUpInside]; 

[cell setAccessoryView:myAccessoryButton]; 

И это отлично работает для меня, кнопки, кроме одной проблемы. В моем шаблоне (PSD) эта кнопка имеет режим смешивания - перекрытие, и когда я экспортирую эту кнопку из формата PSD, у нее есть белые полупрозрачные пиксели, которые должны смешиваться с фоном стола в том же режиме наложения перекрытия. Но по умолчанию экспортируются PNG-смеси в режиме по умолчанию, когда я загружаю его как UIImage для настройки моего аксессуара.

Как изменить режим смешивания UIImage или UIButton или AccessoryView может быть?

it's photoshop view it's simulator view enter image description here

+0

Можно ли разместить фотографии - оба Photoshop показывают, как вы хотите это посмотреть, и от приложения, показывающего, как он выглядит в настоящее время? Тем не менее, вы, вероятно, не можете делать то, что хотите, просто изменив настройку вида. Вы можете использовать много полезных эффектов компоновки, если рисовать вручную, используя 'CGBlendMode'. Таким образом, вы можете создать подкласс 'UIView', затем в методе' drawRect' нарисуйте часть фона таблицы, затем нарисуйте изображение сверху с помощью режима наложения, который вам нужен. Было бы неплохо пропустить шаг рисования фона, но вы, вероятно, не сможете. – Dondragmer

+0

@dondragmer благодарит за ваш ответ. Я прикрепляю образцы в основной теме. Похоже, ты прав, и единственный способ сделать то, что я хочу, - это сделать то, что ты предлагаешь :( –

ответ

1

ли на фото слева, что вы получите в Photoshop? Вы хотите, чтобы он осветил фон, не изменяя его оттенок? Если это так, нет простого способа добиться этого.

Есть две частичные решения:

  1. иметь единый drawRect блок (или его CALayer эквивалент), который рисует фон и рисует свечение, используя соответствующий CGBlendMode.
  2. Редактируйте изображение, чтобы свечение на дне было оттенком коричневого цвета вашего текущего фона.

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

Это может измениться. CALayer уже имеет свойство под названием compositingFilter. Однако, как и в iOS 5.1, его поведение не определено. Если кто-то читает это в будущем, когда iOS делает, у вас есть фильтр компоновки, который работает, пожалуйста, добавьте комментарий, чтобы сказать об этом.

+0

Thanx. Да - левый - это фотошоп. Правый симулятор. Второй вариант самый легкий, но он не выглядит так, как если бы я это делал (смените полупрозрачный белый на полупрозрачный коричневый), но его самый простой способ сделать почти то, что я хочу. Очень близко к результату. –

+0

Чтобы получить то, что я хочу, я делаю следующее изменение, перекрывая режим смешивания по умолчанию. После изменения цвета с белого на красно-коричневый в этой области и добавить немного шума. Теперь он выглядит очень близко к оригиналу в симуляторе (3-й снимок) –

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