Pytanie Programowe dodawanie cienia do etykiety UIButton


Próbuję dodać czarny cień 1px do etykiety przycisku bez powodzenia. Próbowałem tego:self.setTitleShadowOffset = CGSizeMake(0, -1); ale otrzymuję:

Żądanie dla członka "setTitleShadowOffset" w czymś, co nie jest strukturą lub związkiem

Wszelkie sugestie byłyby fantastyczne dzięki!


19
2018-03-03 09:36


pochodzenie




Odpowiedzi:


Inne odpowiedzi nie ustawiają właściwie koloru cienia (podejrzewam, że nie zauważyły, ponieważ próbowały ustawić kolor cienia na domyślnie czarny).

Ten kod pracował dla mnie, aby dodać biały cień do tekstu mojego przycisku:

myButton.titleLabel.shadowOffset = CGSizeMake(0, 1);
[myButton setTitleShadowColor:[UIColor whiteColor] forState:UIControlStateNormal];

20
2018-01-01 18:47



Oprawa myKey.titleLabel.shadowColor naprawdę nie działa! - Berik
Nie możesz tego ustawić za pomocą właściwości - musisz ustawić ją przy użyciu pełnej metody, ponieważ w przeciwnym razie rezygnujesz z forState (co oznacza, że ​​gdy stan ulegnie zmianie, straci ustawiony kolor). Podany fragment kodu powinien działać . - ArtOfWarfare
To jest najlepsze rozwiązanie do tej pory, chciał tylko wskazać, że właściwym sposobem na to jest użycie CGSizeMake nie CGSize - Alejandro Luengo
@ArtOfWarfare gotowe! - Alejandro Luengo
Trochę śmiesznie - 3 lata po tym, jak to opublikowałem, i prawie 5 lat po zadaniu pytania, w końcu został oznaczony jako poprawna odpowiedź. - ArtOfWarfare


Właściwością właściwą jest 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);

38
2018-03-03 09:41



Wielkie dzięki, to zadziałało! - edhog
Linia shadowColor nie działa tak, jak myślisz. Musisz użyć setShadowColor:forState: (nie zauważysz błędu za pomocą tego przykładu, ponieważ ustawia on kolor cienia na czarny, który jest domyślny). - ArtOfWarfare
Dzięki @ArtOfWarfare. Nie próbowałem tego w systemie iOS 6, a zachowanie mogło się zmienić. Testuję i aktualizuję kod. - fsaint
@Felz, nigdy nie zachowywał się tak, jak myślałeś. Kolory cienia zawsze były dostojne, podobnie jak inne właściwości kolorów w systemie iOS, co oznacza, że ​​przywracają domyślny kolor, gdy tylko zmieni się ich stan (IE, ponieważ są one tapnięte lub podświetlone), chyba że użyjesz ich setColor:forState: metody. Po prostu nie zauważyłeś tego w tym konkretnym przypadku, ponieważ domyślny kolor cieni jest czarny. - ArtOfWarfare


The setTitleShadowOffset dla UIButton jest przestarzałe. Użyj shadowOffset własności titleLabel UIButton

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


10
2018-03-03 09:40





W 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


6
2017-09-21 18:39



To nie ustawia cienia na faktycznym tekście. - Sami Samhuri
Wypróbowałem to. To działa. - Raphael Souza
Muszę się mylić. Przepraszam za to! - Sami Samhuri


dla Swift 3:

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

0
2017-10-22 12:41





Oto jak dodać cień do tytułu przycisku w Objective-C z właściwością 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
2017-08-01 12:04