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)
इस तरह आप अपनी बटन छवि स्थिति सेट कर सकते हैं और यदि छवि का नाम बदल जाएगा, तो यह आपके कोड को प्रभावित नहीं करेगा।