Xcode 9.2 का उपयोग करना उपरोक्त में से किसी भी समाधान के लिए काम नहीं करता है जो मैं देख रहा था।
मैं एक ऐसे समाधान की तलाश में था, जो मुझे स्टोरीबोर्ड के अंदर .normalऔर .selected UIControlStateउनके मूल रेंडरिंग मोड के लिए सेट करने की सुविधा दे , लेकिन, स्विफ्ट फ़ाइल के अंदर, छवि नामों के बारे में कोई स्ट्रिंग शाब्दिक मौजूद नहीं होना चाहिए।
मूल रूप से, आपके कोड के अंदर आपको अपने स्टोरीबोर्ड के अंदर सेट की गई छवि प्राप्त होगी .normalऔर इसे .alwaysOriginalउसी तरह से पुनः प्रस्तुत करना होगा ( जैसे .selectedराज्य के लिए), तो आप उस छवि को सेट कर देंगे (जो अब मूल रूप में प्रस्तुत की गई है और इससे प्रभावित नहीं होगी) संबंधित राज्य ( .normalऔर .selected) के लिए टिंट) UIButton।
यह रहा:
// Get your .normal image (you set via your storyboard) and render it as original
let unselectedImage = yourButton.image(for: .normal)?.withRenderingMode(.alwaysOriginal)
// Set your normal image but this time rendered as original
yourButton.setImage(unselectedImage, for: .normal)
// Same for selected state
let selectedImage = yourButton.image(for: .selected)?.withRenderingMode(.alwaysOriginal)
yourButton.setImage(selectedImage, for: .selected)
इस तरह आप अपनी बटन छवि स्थिति सेट कर सकते हैं और यदि छवि का नाम बदल जाएगा, तो यह आपके कोड को प्रभावित नहीं करेगा।