मुझे लगता है कि आप एक UIButton के बारे में बात कर रहे हैं UIButtonTypeRoundedRect
? आप उस की पृष्ठभूमि का रंग नहीं बदल सकते। जब आप इसे बदलने का प्रयास करते हैं तो यह पृष्ठभूमि का रंग होता है, आप बदले में उस बटन का रंग बदल जाते हैं, जो (आमतौर पर स्पष्ट होता है)। तो दो रास्ते हैं। या तो आप UIButton को उपवर्गित करें और इसके अधिलेखित करें-drawRect:
विधि को करते हैं या आप अलग-अलग बटन स्टेट्स के लिए चित्र बनाते हैं (जो करने के लिए पूरी तरह से ठीक है)।
यदि आप इंटरफ़ेस बिल्डर में पृष्ठभूमि चित्र सेट करते हैं, तो आपको ध्यान देना चाहिए कि आईबी उन सभी राज्यों के लिए छवियों को स्थापित करने का समर्थन नहीं करता है जो बटन हो सकते हैं, इसलिए मैं छवियों को इस तरह से कोड में सेट करने की सलाह देता हूं:
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:@"disabled.png"] forState:UIControlStateDisabled];
[myButton setBackgroundImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateSelected];
[myButton setBackgroundImage:[UIImage imageNamed:@"higligted.png"] forState:UIControlStateHighlighted];
[myButton setBackgroundImage:[UIImage imageNamed:@"highlighted+selected.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)];
अंतिम पंक्ति बताती है कि चयनित और हाइलाइट किए गए राज्य के लिए छवि कैसे सेट करें (यह वह है जिसे आईबी सेट नहीं कर सकती है)। यदि आपको बटन चयनित राज्य की आवश्यकता नहीं है, तो आपको चयनित छवियों (पंक्ति 4 और 6) की आवश्यकता नहीं है।