Создайте выделенное фоновое изображение состояния программно для UIButton - PullRequest
0 голосов
/ 09 декабря 2011

Я программно создал UIBarButton со следующим кодом:

UIButton * rightButton = [UIButton buttonWithType:UIButtonTypeCustom];    
[rightButton setFrame:CGRectMake(0, 0, 81, 30)];
[rightButton setBackgroundColor:[UIColor clearColor]];     
rightButton.layer.borderColor = [UIColor blackColor].CGColor;
rightButton.layer.borderWidth = 0.5f;
rightButton.layer.cornerRadius = 5.0f;
rightButton.titleLabel.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:12];
[rightButton setTitleShadowColor:[UIColor blackColor] forState:UIControlStateNormal];
[rightButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
//set text according to sign in status
if (signIn) {
    [rightButton setTitle:@"5 votes left" forState:UIControlStateNormal]; 
} else {
    [rightButton setTitle:@"Sign in" forState:UIControlStateNormal];   
}

UIBarButtonItem * rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:rightButton];
self.navigationItem.rightBarButtonItem = rightBarButton;

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

Я хочу изучить выбор, который НЕ включает установку фоновых изображений для желаемых состояний, потому что текст кнопки может динамически изменяться в зависимости от конфигурации приложения, поэтому мне нужно сделать это полностью с помощью кода.

Ответы [ 2 ]

0 голосов
/ 09 декабря 2011

Подкласс UIButton и добавьте CALayer или CAGradientLayer для достижения желаемого эффекта выделения.Установите начальное состояние выделенного слоя на скрытый.Переопределить setHighlighted: чем-то вроде:

- (void) setHighlighted:(BOOL)highlight {
    highlightLayer.hidden = !highlight;
    [super setHighlighted:highlight];
}
0 голосов
/ 09 декабря 2011

Хотя это и не даст прямого ответа на ваш вопрос, это может помочь. Мне пришлось динамически создавать графику для кнопки и придумал метод, использующий основную графику для создания изображения моей кнопки. Это дает мне гибкость в параметрическом изменении внешнего вида в коде. Оно рисует изображение кнопки в контексте абстрактной графики, а затем преобразует результат в изображение, которое я могу использовать для своей кнопки. Вы можете получить достаточно из моего объяснения, что вы можете попробовать его самостоятельно для своих нужд.

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