Как программно создать серое наложение для кнопки UIB в состоянии касания? - PullRequest
4 голосов
/ 23 марта 2012

Я хотел бы создать общий класс, который при касании делает элемент сероватым.

Приложение Facebook - прекрасный пример того, чего я хочу достичь. Все их ссылки и изображения становятся серыми при нажатии.

enter image description here

Я могу только догадываться, что они подклассы UIButton .

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

Ответы [ 4 ]

2 голосов
/ 23 марта 2012

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

Также обратите внимание, что для изображений Normal State и Highlighted State необходимо иметь изображения с заголовками.

Как только мы установим изображение на кнопку, btn.titleLabel.text не будет отображаться.

Таким образом, вы можете иметь изображение с прозрачным фоном и заголовком для Normal состояния. И серое изображение с заголовком для Highlighted State.

Код для этого программно:

[btn setImage:@"Transperant.png" forState:UIControlStateNormal];
[btn setImage:@"Grey.png" forState:UIControlStateHighlighted];

Надеюсь, это поможет вам.

2 голосов
/ 23 марта 2012

Это просто:

#define TAG_GRAYVIEW 5671263 // some random number

// add the gray overlay
UIView *grayView = [[UIView alloc] initWithFrame:button.bounds];
grayView.backgroundColor = [UIColor grayColor];
grayView.tag = TAG_GRAYVIEW; 

[button addSubview:grayView];

// remove the gray overlay
UIView *grayView = [button viewWithTag:TAG_GRAYVIEW];
[grayView removeFromSuperview];
0 голосов
/ 23 марта 2012

По умолчанию UIButton маскирует непрозрачное содержимое с помощью серого выделения. Например, при использовании прозрачного png, только части, которые содержат непрозрачные пиксели, будут недоступны на ощупь. Подсветка UIButton по умолчанию не влияет на подпредставления / подслои и будет работать только на предоставленных изображениях. То, что вы видите в приложении Facebook, вероятно, просто подсветка UIWebView, возможно настроенная с помощью css.

Чтобы создать нечто подобное, используя свой собственный элемент управления (чтобы избежать издержек UIWebView), вам, вероятно, следует создать собственный подкласс UIControl и выделить содержимое на ощупь с помощью прозрачного CALayer. Вы можете даже замаскировать CALayer, чтобы выделить только фактическое содержимое вместо прямоугольной формы.

Также см. Мою публикацию stackoverflow о создании пользовательских элементов управления для iOS путем создания подкласса UIControl .

0 голосов
/ 23 марта 2012

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

Установите тип кнопки на пользовательский, и в «State Config» выберите «Выделенный», там вы захотите установить изображение кнопки набыть полупрозрачным серым изображением.Есть, вероятно, несколько других способов достижения того же эффекта, но этот должен быть приятным и простым.

enter image description here

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