it-swarm.com.ru

Почему мой UIButton.tintColor не работает?

Моя цель сборки установлена ​​для IOS5, где, как я понимаю, был введен UIButton.tintColor ...

У меня есть это в моем viewDidLoad для View Controller

[timelineButton setTintColor:[UIColor blackColor]];
[timelineButton setTitle:@"test" forState:UIControlStateNormal];

Текст меняется правильно, но кнопка не черная?

Спасибо!

39
sayguh

Согласно документации :

Это свойство не действует для всех типов кнопок.

Вам нужно переключить свой buttonType на другой один из них . (К сожалению, в документации не указано, какие конкретные типы кнопок поддерживают это свойство.)

50
Evan Mulawski

Убедитесь, что ваша кнопка «тип» установлена ​​на «Система». Если для него установлено значение Пользовательский, это может быть причиной того, что цвет вашей кнопки не меняется. Это то, что случилось со мной, и изменение типа на System исправило это.

28
Jesse S.

Он окрашивает ваш выделенный цвет состояния . Когда вы нажимаете/нажимаете на UIB-кнопку, цвет, указанный с помощью tintColor, появляется, пока вы удерживаете нажатие/нажатие на UIB-кнопку.

resetButton.tintColor = [UIColor colorWithRed:0.764 green:1.000 blue:0.000 alpha:1.000];

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

Если вам нужно изменить кнопку, чтобы она выглядела как красная или синяя в UIControlStateNormal, то

Измените UIButtonType на UIButtonTypeCustom в Интерфейсном Разработчике или программно с

 UIButton *resetButton = [UIButton buttonWithType:UIButtonTypeCustom];

Изменить атрибуты по своему усмотрению и воссоздать закругленные углы

resetButton.backgroundColor = [UIColor redColor];
resetButton.layer.borderColor = [UIColor blackColor].CGColor;
resetButton.layer.borderWidth = 0.5f;
resetButton.layer.cornerRadius = 10.0f;
8
Binarian

Как указано в других ответах, оттенок не работает для типов пользовательских кнопок. Убедитесь, что вы явно объявили тип кнопки. Не просто используйте [UIButton alloc] init] 

Это будет работать:

UIButton *mybutton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[mybutton setImage:[UIImage imageNamed:@"myImage"] forState:UIControlStateNormal];
mybutton.tintColor = [ODTheme blueTintColor];
7
Robert Wagstaff

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

[button addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(buttonPressReset:) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];

-(void)buttonPress:(id)sender{
UIButton* button = (UIButton*)sender;
[button setBackgroundColor:[UIColor greenColor]];
NSLog(@"buttonPressed");
}

-(void)buttonPressReset:(id)sender{
UIButton* button = (UIButton*)sender;
[button setBackgroundColor:[UIColor redColor]];
NSLog(@"buttonPressReset");
}
4
alexqinbj

Я нашел 3 вещи, которым нужно следовать.

1. Отобразить изображение как Default

Перейти к Images.xcassets > Your Image > Show the Attributes inspector > Render As > Default

 render as default

2. Убедитесь, что ваш тип кнопки System

3. Теперь измените цвет кнопки tintColor.

Готово.

3
Zaid Pathan

Следует попробовать этот метод:

- (void)setTitleColor:(UIColor *)color
             forState:(UIControlState)state
3
Zverusha

Просто установите UIButton для ввода System в Storyboard.

 enter image description here

И тогда в коде просто используйте:

myButton.tintColor = UIColor.whiteColor()
2
Bartłomiej Semańczyk

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

let btn = UIButton.init(type: .system)
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
1
Bhavesh Patel

Чтобы изменить цвет текста кнопки, вы можете использовать:

resetButton.setTitleColor(UIColor.blackColor(), forState: .Normal)

Или OBJ-C:

- (void)setTitleColor:(UIColor *)color
         forState:(UIControlState)state

https://developer.Apple.com/library/ios/documentation/UIKit/Reference/UIButton_Class/#//Apple_ref/occ/instm/UIButton/setTitleColor:forState :

1
Arjon Bimmel

Просто используйте:

[yourButton setBackgroundImage:[yourButton.currentBackgroundImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal]; 
[yourButton setTintColor:[UIColor blackColor]];
0
Krishna Raj Salim