2013-06-03 12 views
8

पर क्लिक करते समय प्रदर्शित नहीं होता है, मैं चाहता हूं कि मेरा UIButton हाइलाइट किए गए राज्य को प्रदर्शित करे, जब मैं पहले से चुने गए बटन पर क्लिक करता हूं।UIButton हाइलाइट किया गया राज्य किसी चयनित UIButton

असल में हाइलाइट किए गए राज्य में मैं एक * .png छवि को अपने UIButton पृष्ठभूमि छवि के रूप में लागू करता हूं ताकि दबाए गए प्रभाव को प्रभावित किया जा सके।

लेकिन यदि बटन पहले से ही चयनित राज्य में है, तो जब मैं इसे फिर से क्लिक करता हूं तो मैं केवल हाइलाइट किए गए राज्य को नहीं देख सकता लेकिन यह सामान्य स्थिति में जाता है!

घड़ी मुद्दा ->Video of the Issue!

मदद कृपया

//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]; 

उत्तर

18

विभिन्न राज्यों: UIControlStateNormal, UIControlStateSelected, और (UIControlStateSelected | UIControlStateHighlighted) सब वास्तव में अलग हैं। आप अपने shadowImage दोनों (केवल) पर प्रकाश डाला राज्य में और प्रकाश डाला + चयनित राज्य में लागू करना चाहते हैं, तो आप भी सेट करना होगा:

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

थैंक्स भगवान! हाहा ^^ मैं पागल हो रहा था। और निश्चित रूप से धन्यवाद ... मैंने कोड की उस पंक्ति को भी आजमाया लेकिन मैं हाइलाइट किए गए राज्य के लिए लाइन को हटा रहा था क्योंकि मैंने सोचा था कि अनावश्यक था:/ – luca

+0

ऐसा लगता है कि यदि आपने चयनित राज्य के लिए पृष्ठभूमि छवि सेट की है और आईबी में हाइलाइट किया है, समायोजित करते समय आपको सिस्टम हाइलाइट की गई छवि (गहरा भूरा) मिलता है ImageWhen हाइलाइट किया गया है हाँ (डिफ़ॉल्ट है हाँ) या सामान्य छवि। इसलिए हारून गोल्डन के जवाब को कोड करना आवश्यक है। – tounaobun

5

swift में यह होगा:

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

स्विफ्ट में v3 (नवंबर 2016):

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