2013-06-03 24 views
8

UIButton'umun, seçili olan bir düğmeyi tıklattığımda vurgulanan durumu göstermesini istiyorum.UIButton Seçkin UIButton'u tıklatırken Vurgulanan Durum görüntülenmiyor

Vurgulanan durumda, basılmış bir efekt vermek için UIButton backgroundImage olarak * .png resmi uygularım.

Ancak düğme zaten Seçilmiş Durumdaysa Tekrar tıkladığımda, vurgulanan durumu göremiyorum ama normal duruma geçiyor!

İzle Sayı ->Video of the Issue!

Yardım lütfen

//0 init UIButton 
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x, y, aSide, aSide)]; 

//1 Give it a backgroundColor 
[button setBackgroundColor:aColor]; 

[..] 

//2 Set titleLabel and its style 
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
[button setTitleColor:[UIColor redColor] forState:UIControlStateSelected]; 
[button setTitleColor:[UIColor grayColor] forState:UIControlStateHighlighted]; 

UIImage *shadowImage = [UIImage imageNamed:kBtnShadow]; 
shadowImage = [shadowImage stretchableImageWithLeftCapWidth:floorf(shadowImage.size.width/2) topCapHeight:floorf(shadowImage.size.height/2)]; 

[button setBackgroundImage:shadowImage forState: UIControlStateHighlighted]; 

[button setTitle:aLabel forState: UIControlStateNormal]; 

//3 Assign tag and Action 
[button setTag:tag]; 
[button addTarget:target action:a forControlEvents:UIControlEventTouchUpInside]; 

cevap

18

çeşitli devletler: UIControlStateNormal, UIControlStateSelected ve (UIControlStateSelected | UIControlStateHighlighted) hepsi aslında ayrıdır. Eğer senin shadowImage (yalnızca) vurgulanan devlet ve vurgulanan + seçilmiş durumda hem uygulamak istiyorsanız, siz de ayarlamanız gerekir: swift yılında

[button setBackgroundImage:shadowImage forState:(UIControlStateHighlighted | UIControlStateSelected)] 
+0

Thanx God! haha^^ Çıldırıyordum. Ve tabii ki teşekkür ederim ... Kod satırını da denedim ama vurgulanan durum için çizgiyi kaldıracağım diye düşündüm:/ – luca

+0

IB için seçili ve vurgulanmış durum için arka plan resmi ayarlansanız bile, adjustsImageWhenHighlighted YES (varsayılan değer YES) veya normal resim olduğunda sistem vurgulu görüntüsünü (koyu gri) alırsınız. Aaron Golden'un cevabını kodlamak gerekir. – tounaobun

5

bu olacaktır:

button.setBackgroundImage(shadowImage, forState: UIControlState.Selected.union(UIControlState.Highlighted)) 
1

Swift in v3 (Kasım 2016):

button.setBackgroundImage(shadowImage, for: UIControlState.selected.union(UIControlState.highlighted))