এই উত্তরটি সুইফট ৪.২-এর জন্য আপডেট করা হয়েছে।
দ্রুত রেফারেন্স
কোনও বৈশিষ্ট্যযুক্ত স্ট্রিং তৈরি এবং সেট করার জন্য সাধারণ ফর্মটি এই জাতীয়। আপনি নীচে অন্যান্য সাধারণ বিকল্পগুলি খুঁজে পেতে পারেন।
// create attributed string
let myString = "Swift Attributed String"
let myAttribute = [ NSAttributedString.Key.foregroundColor: UIColor.blue ]
let myAttrString = NSAttributedString(string: myString, attributes: myAttribute)
// set attributed text on a UILabel
myLabel.attributedText = myAttrString
let myAttribute = [ NSAttributedString.Key.foregroundColor: UIColor.blue ]
let myAttribute = [ NSAttributedString.Key.backgroundColor: UIColor.yellow ]
let myAttribute = [ NSAttributedString.Key.font: UIFont(name: "Chalkduster", size: 18.0)! ]
let myAttribute = [ NSAttributedString.Key.underlineStyle: NSUnderlineStyle.single.rawValue ]
let myShadow = NSShadow()
myShadow.shadowBlurRadius = 3
myShadow.shadowOffset = CGSize(width: 3, height: 3)
myShadow.shadowColor = UIColor.gray
let myAttribute = [ NSAttributedString.Key.shadow: myShadow ]
এই পোস্টের বাকী যারা আগ্রহী তাদের আরও বিশদ দেয়।
আরোপ করা
স্ট্রিং বৈশিষ্ট্যগুলি আকারে কেবল একটি অভিধান [NSAttributedString.Key: Any]
, যেখানে NSAttributedString.Key
বৈশিষ্ট্যের মূল নাম এবং Any
কোনও প্রকারের মান। মান হরফ, রঙ, পূর্ণসংখ্যা বা অন্য কিছু হতে পারে। সুইফটে অনেক মানক বৈশিষ্ট্য রয়েছে যা ইতিমধ্যে পূর্বনির্ধারিত হয়ে গেছে। উদাহরণ স্বরূপ:
- মূল নাম:,
NSAttributedString.Key.font
মান: কUIFont
- মূল নাম:,
NSAttributedString.Key.foregroundColor
মান: কUIColor
- কী নাম:,
NSAttributedString.Key.link
মান: একটি NSURL
বাNSString
আরও অনেকে আছেন। আরও জন্য এই লিঙ্কটি দেখুন। আপনি নিজের কাস্টম বৈশিষ্ট্যগুলিও এর মতো করতে পারেন:
কী নাম:, NSAttributedString.Key.myName
মান: কিছু প্রকার।
যদি আপনি কোনও এক্সটেনশন করেন :
extension NSAttributedString.Key {
static let myName = NSAttributedString.Key(rawValue: "myCustomAttributeKey")
}
সুইফটে বৈশিষ্ট্য তৈরি করা হচ্ছে
আপনি অন্য কোনও অভিধান ঘোষণার মতো বৈশিষ্ট্যগুলি ঘোষণা করতে পারেন।
// single attributes declared one at a time
let singleAttribute1 = [ NSAttributedString.Key.foregroundColor: UIColor.green ]
let singleAttribute2 = [ NSAttributedString.Key.backgroundColor: UIColor.yellow ]
let singleAttribute3 = [ NSAttributedString.Key.underlineStyle: NSUnderlineStyle.double.rawValue ]
// multiple attributes declared at once
let multipleAttributes: [NSAttributedString.Key : Any] = [
NSAttributedString.Key.foregroundColor: UIColor.green,
NSAttributedString.Key.backgroundColor: UIColor.yellow,
NSAttributedString.Key.underlineStyle: NSUnderlineStyle.double.rawValue ]
// custom attribute
let customAttribute = [ NSAttributedString.Key.myName: "Some value" ]
নোট করুন rawValue
আন্ডারলাইন শৈলীর মানের জন্য এটি প্রয়োজনীয় ছিল তা ।
বৈশিষ্ট্যগুলি কেবল ডিকোরিয়াস হওয়ায় আপনি একটি খালি অভিধান তৈরি করে এবং এরপরে কী-মান জোড় যুক্ত করে এগুলি তৈরি করতে পারেন। যদি মানটিতে একাধিক প্রকার থাকে তবে আপনাকে Any
প্রকার হিসাবে ব্যবহার করতে হবে । multipleAttributes
উপরে থেকে উদাহরণটি এখানে দেওয়া হয়েছে, এই ফ্যাশনে পুনর্নির্মাণ:
var multipleAttributes = [NSAttributedString.Key : Any]()
multipleAttributes[NSAttributedString.Key.foregroundColor] = UIColor.green
multipleAttributes[NSAttributedString.Key.backgroundColor] = UIColor.yellow
multipleAttributes[NSAttributedString.Key.underlineStyle] = NSUnderlineStyle.double.rawValue
অ্যাট্রিবিউট স্ট্রিংস
এখন আপনি যে বৈশিষ্ট্যগুলি বুঝতে পারছেন, আপনি বিশিষ্ট স্ট্রিং তৈরি করতে পারেন।
আরম্ভ
বিশিষ্ট স্ট্রিংগুলি তৈরি করার কয়েকটি উপায় রয়েছে। আপনার যদি কেবল পঠনযোগ্য কেবল স্ট্রিংয়ের প্রয়োজন হয় তবে আপনি ব্যবহার করতে পারেন NSAttributedString
। এটি সূচনা করার কিছু উপায় এখানে রয়েছে:
// Initialize with a string only
let attrString1 = NSAttributedString(string: "Hello.")
// Initialize with a string and inline attribute(s)
let attrString2 = NSAttributedString(string: "Hello.", attributes: [NSAttributedString.Key.myName: "A value"])
// Initialize with a string and separately declared attribute(s)
let myAttributes1 = [ NSAttributedString.Key.foregroundColor: UIColor.green ]
let attrString3 = NSAttributedString(string: "Hello.", attributes: myAttributes1)
আপনার যদি পরে বৈশিষ্ট্য বা স্ট্রিং সামগ্রী পরিবর্তন করতে হয় তবে আপনার ব্যবহার করা উচিত NSMutableAttributedString
। ঘোষণাগুলি খুব অনুরূপ:
// Create a blank attributed string
let mutableAttrString1 = NSMutableAttributedString()
// Initialize with a string only
let mutableAttrString2 = NSMutableAttributedString(string: "Hello.")
// Initialize with a string and inline attribute(s)
let mutableAttrString3 = NSMutableAttributedString(string: "Hello.", attributes: [NSAttributedString.Key.myName: "A value"])
// Initialize with a string and separately declared attribute(s)
let myAttributes2 = [ NSAttributedString.Key.foregroundColor: UIColor.green ]
let mutableAttrString4 = NSMutableAttributedString(string: "Hello.", attributes: myAttributes2)
একটি অ্যাট্রিবিউটেড স্ট্রিং পরিবর্তন করা
উদাহরণস্বরূপ, আসুন এই পোস্টের শীর্ষে বিশিষ্ট স্ট্রিং তৈরি করুন।
প্রথমে NSMutableAttributedString
একটি নতুন ফন্টের বৈশিষ্ট্য সহ একটি তৈরি করুন ।
let myAttribute = [ NSAttributedString.Key.font: UIFont(name: "Chalkduster", size: 18.0)! ]
let myString = NSMutableAttributedString(string: "Swift", attributes: myAttribute )
আপনি যদি পাশাপাশি কাজ করে থাকেন তবে এইভাবে একটি UITextView
(বা UILabel
) এর জন্য বিশিষ্ট স্ট্রিংটি সেট করুন :
textView.attributedText = myString
আপনি ব্যবহার করবেন নাtextView.text
।
ফলাফল এখানে:
তারপরে আর একটি বৈশিষ্ট্যযুক্ত স্ট্রিং যুক্ত করুন যার কোনও বৈশিষ্ট্য সেট নেই। (লক্ষ্য করুন যে যদিও আমি উপরে let
ঘোষণা myString
দিয়েছি, তবুও আমি এটি পরিবর্তন করতে পারি কারণ এটি একটি NSMutableAttributedString
। এটি আমার কাছে বরং অপ্রয়োজনীয় বলে মনে হয় এবং ভবিষ্যতে এই পরিবর্তনগুলি ঘটলে আমি অবাক হব না that ঘটনাটি ঘটলে আমাকে একটি মন্তব্য দিন))
let attrString = NSAttributedString(string: " Attributed Strings")
myString.append(attrString)
এরপরে আমরা কেবল "স্ট্রিংস" শব্দটি নির্বাচন করব, যা সূচকে শুরু হয় 17
এবং এর দৈর্ঘ্য রয়েছে 7
। লক্ষ্য করুন যে এটি একটি NSRange
এবং একটি সুইফট নয় Range
। ( পরিসীমা সম্পর্কে আরও তথ্যের জন্য এই উত্তরটি দেখুন )) addAttribute
পদ্ধতিটি আমাদের প্রথম স্থানটিতে অ্যাট্রিবিউটের কী নাম, দ্বিতীয় স্থানের বৈশিষ্ট্যের মান এবং তৃতীয় স্থানে ব্যাপ্তি রাখতে দেয়।
var myRange = NSRange(location: 17, length: 7) // range starting at location 17 with a lenth of 7: "Strings"
myString.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor.red, range: myRange)
শেষ পর্যন্ত, একটি পটভূমি রঙ যুক্ত করা যাক। বিভিন্নতার জন্য, আসুন addAttributes
পদ্ধতিটি ব্যবহার করুন (নোটটি নোট করুন s
)। আমি এই পদ্ধতির সাথে একসাথে একাধিক বৈশিষ্ট্য যুক্ত করতে পারি, তবে আমি আবার একটি যুক্ত করব।
myRange = NSRange(location: 3, length: 17)
let anotherAttribute = [ NSAttributedString.Key.backgroundColor: UIColor.yellow ]
myString.addAttributes(anotherAttribute, range: myRange)
লক্ষ্য করুন যে বৈশিষ্ট্যগুলি কিছু জায়গায় ওভারল্যাপ হচ্ছে। একটি বৈশিষ্ট্য যুক্ত করা ইতিমধ্যে সেখানে থাকা কোনও গুণকে ওভাররাইট করে না।
সম্পর্কিত
আরও পড়া
NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue | NSUnderlineStyle.PatternDot.rawValue