Программно добавляем тень к метке UIButton - PullRequest
19 голосов
/ 03 марта 2011

Я пытаюсь добавить 1px черную тень на ярлык кнопки, но безуспешно.Я пробовал это: self.setTitleShadowOffset = CGSizeMake(0, -1);, но я получаю:

Запрос члена 'setTitleShadowOffset' в нечто, не являющееся структурой или объединением

Любые предложения будут фантастическими, спасибо!

Ответы [ 6 ]

38 голосов
/ 03 марта 2011

Правильным свойством является self.titleLabel.shadowOffset:

UIButton *b = [UIButton buttonWithType:UIButtonTypeRoundedRect];    
[b setTitleShadowColor:[UIColor purpleColor] forState:UIControlStateNormal];
b.titleLabel.shadowOffset = CGSizeMake(1.0, 1.0);
[b setTitle:@"Hello, I'm a Button" forState:UIControlStateNormal];
b.frame = CGRectMake(10.0, 10.0,300.0, 40.0);
21 голосов
/ 01 января 2013

Другие ответы неправильно устанавливают цвет тени (я подозреваю, что они не заметили, потому что они пытались установить цвет тени на то, что по умолчанию черный).

Этот код помог мне добавить белую тень к тексту моей кнопки:

myButton.titleLabel.shadowOffset = CGSizeMake(0, 1);
[myButton setTitleShadowColor:[UIColor whiteColor] forState:UIControlStateNormal];
10 голосов
/ 03 марта 2011

setTitleShadowOffset для UIButton устарело.Используйте shadowOffset свойства titleLabel UIButton

buttonName.titleLabel.shadowOffset = CGSizeMake(0, -1);

7 голосов
/ 21 сентября 2016

In Swift 3.0

myButton.titleLabel?.layer.shadowRadius = 3
myButton.titleLabel?.layer.shadowColor = UIColor.black.cgColor
myButton.titleLabel?.layer.shadowOffset = CGSize(width: 0, height: 1)
myButton.titleLabel?.layer.shadowOpacity = 0.5
myButton.titleLabel?.layer.masksToBounds = false

enter image description here

0 голосов
/ 01 августа 2018

Вот как добавить тень к заголовку кнопки в Objective-C со свойством radius:

#import <QuartzCore/QuartzCore.h>    

button.titleLabel.layer.shadowOffset = CGSizeMake(2.0, 2.0);
button.titleLabel.layer.shadowColor = [UIColor colorWithWhite:0.1 alpha:0.7].CGColor;
button.titleLabel.layer.shadowRadius = 2.0;
button.titleLabel.layer.shadowOpacity = 1.0;
button.titleLabel.layer.masksToBounds = NO;
0 голосов
/ 22 октября 2016

для Swift 3:

  button.setTitleShadowColor(UIColor.red, for: .normal)
  button.titleLabel?.shadowOffset = CGSize(width: 2, height: 2)
...