UIButton не будет серым - PullRequest
       2

UIButton не будет серым

34 голосов
/ 10 июня 2011

Разве UIButton не должен становиться сероватым / серым при включении = НЕТ?

У меня есть простая UIButton на черном фоне (без пользовательских изображений, без пользовательских ничего, просто перетянул его с помощью IB, изменил размер иtitle).

И когда я устанавливаю его программно, чтобы он отключился, он остается чертовски белым!

Пока я использую небольшой глупый обходной путь: скрытый blackbg 0,5 alpha UIView сверхукнопки, которая становится скрытой = НЕТ, когда мне нужно отключить кнопку ... но я хотел бы правильно установить кнопку ...

Есть мысли?

Ответы [ 5 ]

49 голосов
/ 08 августа 2011

Существует еще один способ без буквенного алфавита всей кнопки:

[startButton setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];

Затем, когда вы устанавливаете для свойства enabled значение NO, текст кнопки автоматически становится серым.

41 голосов
/ 10 июня 2011

Нет способа сделать UIButton более "серым". Но вы можете использовать этот трюк:

UIButton *myButton;
myButton.alpha = 0.4;
myButton.enabled = NO;

Так что ваша UIButton выглядит непригодной;)

1 голос
/ 16 июня 2015

Просто создайте категорию UIButton, как показано ниже, и импортируйте #import "UIButton+StateColors.h" в классы, где вы хотите ее использовать.

.h

#import <UIKit/UIKit.h>

@interface UIButton (StateColors)

-(void)makeDisabled:(BOOL)flag;

@end

.m

#import "UIButton+StateColors.h"

#define ENABLED_BUTTON_ALPHA 1
#define DISABLED_BUTTON_ALPHA 0.3

@implementation UIButton (StateColors)

-(void)makeDisabled:(BOOL)flag {
    self.enabled = !flag;
    self.alpha = flag ? DISABLED_BUTTON_ALPHA : ENABLED_BUTTON_ALPHA;
}


@end

И используйте это так ...

[self.emailBtn makeDisabled:NO];
[self.printBtn makeDisabled:YES];

Надеюсь, это универсальное решение ...

1 голос
/ 13 января 2014

Я столкнулся с этим вопросом, и Apple опубликовала новый Каталог пользовательского интерфейса UIKit для работы с кнопками в iOS 7.

В ответ на ваш вопрос, UIButton Class теперь предоставляет свойство под названием AdjusttsImageWhenDisabled, которое является «логическим значением, которое определяет, изменяется ли изображение, когда кнопка отключена».

Если для свойства Adjust.ImageWhenDisabled установлено значение "ДА", изображение отключается темнее, когда кнопка отключена. Значение по умолчанию - ДА. "

0 голосов
/ 18 июля 2014

У меня такая же проблема, потому что я установил цвет фона.

Я удалил цвет фона и установил его только для UIControlStateNormal, и стало появляться поведение по умолчанию для включения / выключения.

Если вы устанавливаете цвет фона вместо изображения, попробуйте эту категорию для преобразования UIColor в UIImage:

скопировано из здесь :

+ (UIImage *)imageWithColor:(UIColor *)color
{
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}

, затем используйте это:

[self.loginButton setBackgroundImage:[UIImage imageWithColor:greenColor] forState:UIControlStateNormal];
self.loginButton.enabled = NO;

, чтобы установить цвет фона.Теперь при включении / отключении должен появиться серый эффект.

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