সুইফট 4 সহ, NSAttributedStringKey
একটি স্থিতিশীল সম্পত্তি বলা হয় foregroundColor
। foregroundColor
নিম্নলিখিত ঘোষণা আছে:
static let foregroundColor: NSAttributedStringKey
এই বৈশিষ্ট্যের মান একটি UIColor
অবজেক্ট। রেন্ডারিংয়ের সময় পাঠ্যের রঙ নির্দিষ্ট করতে এই বৈশিষ্ট্যটি ব্যবহার করুন। আপনি যদি এই বৈশিষ্ট্যটি নির্দিষ্ট না করেন তবে পাঠ্যটি কালো বর্ণিত হয়।
নিম্নলিখিত খেলার মাঠের কোডটি NSAttributedString
উদাহরণ সহ পাঠ্যের রঙটি কীভাবে সেট করবেন তা দেখায় foregroundColor
:
import UIKit
let string = "Some text"
let attributes = [NSAttributedStringKey.foregroundColor : UIColor.red]
let attributedString = NSAttributedString(string: string, attributes: attributes)
শো নিচের কোড একটি সম্ভাব্য UIViewController
বাস্তবায়ন যে উপর নির্ভর করে NSAttributedString
একটি টেক্সট এবং টেক্সট রঙ আপডেট করতে অনুক্রমে UILabel
A থেকে UISlider
:
import UIKit
enum Status: Int {
case veryBad = 0, bad, okay, good, veryGood
var display: (text: String, color: UIColor) {
switch self {
case .veryBad: return ("Very bad", .red)
case .bad: return ("Bad", .orange)
case .okay: return ("Okay", .yellow)
case .good: return ("Good", .green)
case .veryGood: return ("Very good", .blue)
}
}
static let minimumValue = Status.veryBad.rawValue
static let maximumValue = Status.veryGood.rawValue
}
final class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var slider: UISlider!
var currentStatus: Status = Status.veryBad {
didSet {
// currentStatus is our model. Observe its changes to update our display
updateDisplay()
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Prepare slider
slider.minimumValue = Float(Status.minimumValue)
slider.maximumValue = Float(Status.maximumValue)
// Set display
updateDisplay()
}
func updateDisplay() {
let attributes = [NSAttributedStringKey.foregroundColor : currentStatus.display.color]
let attributedString = NSAttributedString(string: currentStatus.display.text, attributes: attributes)
label.attributedText = attributedString
slider.value = Float(currentStatus.rawValue)
}
@IBAction func updateCurrentStatus(_ sender: UISlider) {
let value = Int(sender.value.rounded())
guard let status = Status(rawValue: value) else { fatalError("Could not get Status object from value") }
currentStatus = status
}
}
তবে নোট করুন যে আপনাকে এ NSAttributedString
জাতীয় উদাহরণের জন্য সত্যই ব্যবহার করার দরকার নেই এবং কেবলমাত্র UILabel
এর text
এবং textColor
বৈশিষ্ট্যের উপর নির্ভর করতে পারেন । অতএব, আপনি updateDisplay()
নিম্নলিখিত কোড সহ আপনার বাস্তবায়ন প্রতিস্থাপন করতে পারেন :
func updateDisplay() {
label.text = currentStatus.display.text
label.textColor = currentStatus.display.color
slider.value = Float(currentStatus.rawValue)
}