Attributed Text: یہ کیا ہے، وصفات کی اقسام اور انداز دہی

مصنف: IT Sectr اشاعت: 2026-07-23 مطالعے کا وقت: 8 منٹ

Attributed Text iOS SDK کا ایک میکانزم ہے، جس کی نمائندگی NSAttributedString اور NSMutableAttributedString کلاسیز کرتی ہیں، جو ایک متن سترنگ کے مختلف حصوں پر متعدد انداز لاگو کرنے کی اجازت دیتا ہے۔ ایک عام NSString کے برعکس، Attributed String نہ صرف حروف بلکی ہر حد کے لیے وصفات کی ایک فرہنگ بھی محفوظ کرتا ہے: فانٹ، رنگ، سطر کا فاصلہ، سایہ اور صف بندی۔ Apple Developer Documentation کے مطابق، Attributed String UILabel، UITextView اور UITextField میں فارمیٹ شدہ متن کی نمائش کی بنیاد ہے۔ WebKit یا تیسری جانب کی لائبریریوں کے بغیر متن کو انداز دینے کا یہ معیاری طریقہ ہے۔

اہم نکات

  • NSAttributedString — iOS میں وصفات کی فرہنگ کے ذریعے متن کو انداز دینے کے لیے ایک ناقابل تبدیل کلاس
  • وصفات میں فانٹ، رنگ، سطر کا فاصلہ، سایہ، پیس کی لکیر اور صف بندی شامل ہیں
  • NSMutableAttributedString — متحرک طور پر انداز لاگو کرنے کے لیے ایک قابل تبدیل ورژن
  • addAttributes ایک حد پر وصفات کی فرہنگ لاگو کرتا ہے، addAttribute ایک واحد وصف لاگو کرتا ہے
  • NSAttributedString UILabel، UITextView، UITextField اور Core Text میں استعمال ہوتا ہے

iOS میں Attributed Text کیا ہے؟

NSAttributedString Foundation فریم ورک کی ایک کلاس ہے جو حروف کی حدوں سے منسلک نام زدہ وصفات کے ایک سیٹ کے ساتھ ایک سترنگ کی نمائندگی کرتی ہے۔ ہر وصف ایک کلیڈ-قیمت جوڑا ہے: کلیڈ ایک مساتقل (NSFontAttributeName، NSForegroundColorAttributeName) سے متعین ہوتی ہے، اور قیمت متبادل آبجیکٹ (UIFont، UIColor) ہیں۔ وصفات NSRange کے ذریعے حروف کی ایک حد پر لاگو ہوتی ہیں۔

یہ کلاس تمام Apple پلیٹ فارمز پر دستیاب ہے: iOS (2.0+)، macOS، tvOS، watchOS۔ NSAttributedString ناقابل تبدیل ہے — ایک بار تخلیق ہونے کے بعد، اس کے وصفات مقرر ہوتے ہیں۔ متحرک تبدیلیوں کے لیے NSMutableAttributedString استعمال ہوتا ہے، جو NSAttributedString سے وراستی پاتا ہے اور setAttributes، addAttributes، addAttribute، removeAttribute کے طریقے شامل کرتا ہے۔

NSString سے فرق

NSString انداز کی معلومات کے بغیر حروف کی ایک سادہ سترنگ ہے۔ text کے ذریعے UILabel کو بھیجا گیا کوئی متن ایک فانٹ، رنگ اور سائز میں ظاہر ہوتا ہے۔ NSAttributedString، attributedText کے ذریعے بھیجا گیا، ہر حرف کو وصفات کا اپنا سیٹ رکھنے کی اجازت دیتا ہے۔ UILabel، UITextView اور UITextField خود بھی NSAttributedString کو پہچانتے ہیں اور اس کے وصفات کے مطابق متن کو رنڈر کرتے ہیں۔

ذخیرہ کا فارمیٹ

اندرونی طور پر، NSAttributedString متن کے ساتھ ایک NSString اور وصفات کی حدوں کی ایک ارے محفوظ کرتا ہے۔ ہر حد ایک NSRange سختی اور ایک وصفات کی فرہنگ سے ظاہر کی جاتی ہے۔ رنڈرنگ کے دوران، سیسٹم حدوں کو دھرتا ہے اور ہر حصے پر متبادل وصفات لاگو کرتا ہے۔ کارکردگی کا انسھار وصفات کی تبدیلیوں کی تعداد پر منحصر ہے — مختصر حصوں پر بار بار تبدیلیاں رنڈرنگ کا وقت بڑھاتی ہیں۔

NSAttributedString کے وصفات

NSAttributedString کے وصفات UIKit (iOS) اور AppKit (macOS) میں متعین کردہ مساتقل ہیں، ہر ایک متن کے بصری انداز کے ایک مختص پہلو سے متبادل ہے۔ تمام وصفات NSAttributedString.Key سترنگز ہیں، اور ان کی قیمتیں مختص کلاسوں کے آبجیکٹ ہیں۔ وصفات حرف کی سطح (حروف کو متاثر کرتے ہیں) اور پیراگراف کی سطح (پیراگراف کو متاثر کرتے ہیں) میں تقسیم ہیں۔

حرف کی سطح کے وصفات میں فانٹ (NSFontAttributeName)، متن کا رنگ (NSForegroundColorAttributeName)، پس منظر کا رنگ (NSBackgroundColorAttributeName)، پیس کی لکیر (NSUnderlineStyleAttributeName)، ٹیڈ کی لکیر (NSStrikethroughStyleAttributeName)، سایہ (NSShadowAttributeName) شامل ہیں۔ پیراگراف کی سطح کے وصفات NSParagraphStyleAttributeName کے ذریعے متعین کیے جاتے ہیں، جو صف بندی، حاشیہ، سطر کا فاصلہ اور ٹیبولیشن کو کنٹرول کرتا ہے۔

لنک اور انٹریکٹیویٹی کے وصفات

NSLinkAttributeName متن میں ایک قابل کلک لنک تخلیق کرتا ہے: قیمت URL یا سترنگ ہے۔ اگر انٹریکشن فعال ہو تو UITextView ان لنکوں کو خود بھی ہینڈل کرتا ہے۔ NSAttachmentAttributeName ایک NSTextAttachment — متن کے اندر ایک تصویر جو ایک ان لائین عنصر کے طور پر ظاہر ہوتی ہے — کو شامل کرنے کی اجازت دیتا ہے۔ یہ ایک سترنگ کے اندر آئیکنز، ایموجیز یا کسٹم ویوز کے ساتھ متن تخلیق کرنے کے لیے استعمال ہوتا ہے۔

بنیادی انداز کے وصفات

ہر NSAttributedString وصف کی ایک سختی سے ٹائپ کردہ قیمت ہوتی ہے۔ iOS ڈیویلپمنٹ میں سب سے زیادہ استعمال ہونے والے وصفات پر نظر ڈالیں۔ فانٹ ایک UIFont آبجیکٹ کے ذریعے، رنگ UIColor کے ذریعے، سطر کا فاصلہ NSMutableParagraphStyle کے ذریعے متعین کیا جاتا ہے، جو ایک آبجیکٹ میں صف بندی، حاشیہ اور فاصلے کو ترتیب دینے کی اجازت دیتا ہے۔

وصف کی کلیڈقیمت کی قسممقصد
NSFontAttributeNameUIFontمتن کا فانٹ
NSForegroundColorAttributeNameUIColorمتن کا رنگ
NSBackgroundColorAttributeNameUIColorمتن کے پیچے پس منظر کا رنگ
NSUnderlineStyleAttributeNameNSNumber (Int)پیس کی لکیر کا انداز
NSParagraphStyleAttributeNameNSParagraphStyleپیراگراف کی ترتیبات
NSKernAttributeNameNSNumber (Float)حروف کا فاصلہ (کرننگ)

NSParagraphStyle

NSParagraphStyle پیراگراف کے وصفات کے لیے ایک کنٹینر ہے: alignment، lineSpacing، paragraphSpacing، firstLineHeadIndent، lineBreakMode، minimumLineHeight اور دیگر۔ ان میتدائے کو ترمیم کرنے کے لیے، ایک NSMutableParagraphStyle تخلیق کیا جاتا ہے، مطلوبہ خواص مقرر کی جاتی ہیں، اور آبجیکٹ کو NSParagraphStyleAttributeName وصف کی قیمت کے طور پر بھیجا جاتا ہے۔ NSAttributedString میں سطر کا فاصلہ کنٹرول کرنے کا یہ واحد طریقہ ہے۔

سایہ اور افکٹس

NSShadow متن میں سایہ شامل کرنے کی اجازت دیتا ہے: shadowOffset، shadowBlurRadius، shadowColor کے پیرامیٹر سایہ کے اِفسیٹ، دھندلےپن اور رنگ کو مقرر کرتے ہیں۔ پیس کی لکیر اور ٹیڈ کی لکیر کے وصفات اندازوں کے امتزاجات کو قبول کرتے ہیں: NSUnderlineStyle.single، .double، .thick، .patternDash، .patternDot۔ لائنوں کی موٹائی اور رنگ پر عین کنٹرول کے لیے NSUnderlineColorAttributeName اور NSStrikethroughColorAttributeName استعمال کیے جاتے ہیں۔

کوڈ میں NSAttributedString کا استعمال

Swift میں NSAttributedString تخلیق متن اور ایک وصفات کی فرہنگ کے ساتھ ایک اینیشیالائزر کے ذریعے، یا قدم بہ قدم انداز لاگو کے ساتھ NSMutableAttributedString کے ذریعے کی جاتی ہے۔ بنیادی نظریہ پورے متن کے لیے وصفات کی ایک فرہنگ متعین کرنا ہے، پھر مختص حدوں کے لیے وصفات شامل یا ترمیم کرنا ہے۔

پورے متن کے لیے وصفات کے ساتھ تخلیق

ایک سادہ مثال — پوری سترنگ کے لیے فانٹ، رنگ اور صف بندی مقرر کرنا۔ وصفات کی فرہنگ NSAttributedString اینیشیالائزر کو بھیجی جاتی ہے۔ فرہنگ کی کلیڈیں NSAttributedString.Key مساتقل ہیں، قیمتیں متبادل UIKit آبجیکٹ ہیں۔ یہ بنیادی معاملہ ہے جب پورا متن یکسان طور پر فارمیٹ کیا جاتا ہے۔

swift
let attributes: [NSAttributedString.Key: Any] = [
    .font: UIFont.systemFont(ofSize: 16),
    .foregroundColor: UIColor.darkGray,
    .paragraphStyle: let style = NSMutableParagraphStyle()
    style.alignment = .center
    style.lineSpacing = 4
    return style
]
let attributedString = NSAttributedString(
    string: "Hello world",
    attributes: attributes
)
label.attributedText = attributedString

متن systemFont 16، گھر سلیٹر رنگ، مرکزی صف بندی اور 4pt سطر کے فاصلے کے ساتھ ظاہر ہوگا۔ یہ نظریہ مستقل ہیڈرز اور بٹنز کے لیے آسان ہے۔

ایک حد پر لاگو کرنا

NSMutableAttributedString متن کے مختلف حصوں پر مختلف انداز لاگو کرنے کی اجازت دیتا ہے۔ addAttribute کا طریقہ ایک حد میں ایک واحد وصف شامل کرتا ہے، addAttributes وصفات کی ایک فرہنگ شامل کرتا ہے۔ setAttributes کا طریقہ ایک حد کے تمام موجودہ وصفات کو نئے وصفات سے بدل دیتا ہے۔ یہ هائی لائٹ کے ساتھ متن تخلیق کرنے کا بنیادی اوزار ہے۔

swift
let text = "Price: 1999 rubles"
let attributed = NSMutableAttributedString(string: text)
attributed.addAttribute(.foregroundColor,
    value: UIColor.green, range: NSRange(location: 6, length: 4))
attributed.addAttribute(.font,
    value: UIFont.boldSystemFont(ofSize: 20), range: NSRange(location: 6, length: 4))
label.attributedText = attributed

لفظ «1999» سبز اور جرائت ہوگا، باقی متن معیاری ہوگا۔ NSRange دستی طور پر حساب کیا جاتا ہے — خاص کر کے ایموجیز اور مرکب Unicode حروف کے ساتھ کام کرتے وقت حروف میں لمبائی کو درست طور پر گننا اہم ہے۔

NSMutableAttributedString کے ساتھ متحرک انداز

NSMutableAttributedString متن اور وصفات کو متحرک طور پر تبدیل کرنے کے لیے طریقے فراہم کرتا ہے: append، insert، replace، delete، setAttributes، addAttribute، removeAttribute، enumerateAttributes۔ یہ مختلف ذرائع سے متن تعمیر کرنے، اندازوں کو مرکب کرنے اور انٹرفیس کے واقعات پر رد عمل کرنے کی اجازت دیتا ہے۔

ناقابل تبدیل NSAttributedString کے برعکس، قابل تبدیل ورژن ایک نئا آبجیکٹ تخلیق کیے بغیر مواد کو تبدیل کرنے کی حمایت کرتا ہے۔ یہ متن ایڈیٹرز، چیٹس اور فارمز کے لیے بہت اہم ہے جہاں صاحب استعمال متن میں ترمیم کر سکتا ہے اور انداز محفوظ رہنے چاہئے۔

چیٹ میں اندازوں کا مرکب

میسنجرز میں، ہر پیغام میں صاحب استعمال کا نام (موٹا فانٹ)، پیغام کا متن (عام)، وقت (سلیٹر رنگ) ہوتا ہے۔ NSMutableAttributedString مناسب وصفات کے ساتھ مطلوبہ ترتیب میں حصے شامل کر کے ایک بار میں ایسی سترنگ تعمیر کرنے کی اجازت دیتا ہے۔

swift
let result = NSMutableAttributedString()
let name = NSAttributedString(string: "Anna: ",
    attributes: [.font: UIFont.boldSystemFont(ofSize: 15)])
let message = NSAttributedString(string: "Hello, how are you?",
    attributes: [.font: UIFont.systemFont(ofSize: 15)])
let time = NSAttributedString(string: " 12:30",
    attributes: [.foregroundColor: UIColor.gray])
result.append(name)
result.append(message)
result.append(time)
label.attributedText = result

نتیجہ تین انداز شدہ حصوں کے ساتھ ایک هی سترنگ ہے۔ Append خود بھی NSRange کا حساب لگاتا ہے، مقامات کو دستی طور پر حساب کرنے کی ضرورت نہیں ہے۔ یہ نظریہ کسی بھی تعداد کے ٹکڑوں کے لیے قابل پھیلاءی ہے۔

وصفات کی گنواں

enumerateAttributes(in:options:using:) کا طریقہ مختص وقفے میں تمام وصفات کی حدوں کو دھرتا ہے۔ یہ فارمیٹنگ تجزیے کے لیے مفید ہے: تمام لنک چھانہے، مختص وصفات کا رنگ بدلنا یا متن کو HTML میں ایکسپورٹ کرنا۔ کلوزر کو موجودہ حصے کی وصفات کی فرہنگ اور NSRange موصول ہوتا ہے۔

UIKit UI اجزاء میں Attributed Text

UIKit میں متن ظاہر کرنے کے لیے تمام اهم UI اجزاء attributedText کی خاصیت کے ذریعے NSAttributedString کی حمایت کرتے ہیں۔ UILabel مستقل انداز شدہ متن ظاہر کرتا ہے، UITextView ترمیم اور لنک کی حمایت کرتا ہے، UITextField پلیس ہولڈر اور درج کردہ متن کے لیے علاحدہ وصفات قبول کرتا ہے۔

attributedText کے ساتھ UILabel

UILabel انداز شدہ متن ظاہر کرنے کا سب سے ہلکا جزو ہے۔ یہ تمام حرف کی سطح کے وصفات کی حمایت کرتا ہے لیکن قابل کلک لنک کو خود بھی ہینڈل نہیں کرتا (اس کے لیے UITextView درکار ہے)۔ UILabel هیڈرز، لیبلز اور مختصر فارمیٹ شدہ متن کے لیے موزوں ہے۔

لنک کے ساتھ UITextView

UITextView NSLinkAttributeName کو ہینڈل کرتا ہے اور لنک کو انٹریکٹیو عناصر کے طور پر ظاہر کرتا ہے۔ اس فنکشن کو فعال کرنے کے لیے، isSelectable = true اور isEditable = false مقرر کریں۔ جب کسی لنک پر ٹپ کیا جاتا ہے، ڈیلیگیٹ textView(_:shouldInteractWith:in:interaction:) وصول کرتا ہے۔ UITextView متن کے اندر تصاویر کے لیے NSTextAttachment کی بھی حمایت کرتا ہے۔

swift
let text = "Details on developer.apple.com"
let attributed = NSMutableAttributedString(string: text)
attributed.addAttribute(.link,
    value: URL(string: "https://developer.apple.com")!,
    range: NSRange(location: 0, length: text.count))
textView.attributedText = attributed
textView.isSelectable = true
textView.isEditable = false

isSelectable اور isEditable مقرر کرنے کے بعد، متن کا علاقہ ایک مستقل متن بلاک کی طرح برتاو کرتا ہے، لیکن لنک فعال رہتے ہیں۔ UITextViewDelegate ٹپ پر برتاو کو کنٹرول کرتا ہے۔

Core Text کے ساتھ انضمام

Core Text متن رنڈرنگ کے لیے Apple کا ایک نشیبی سطح کا فریم ورک ہے جو براہ راست NSAttributedString کے ساتھ کام کرتا ہے۔ UIKit کے برعکس، Core Text NSAttributedString کو براہ راست ایک ڈسپلے آبجیکٹ کے طور پر استعمال نہیں کرتا — اس کے بجائے وہ اسے CTFramesetter، پھر CTFrame میں تبدیل کرتا ہے اور ایک Core Graphics کی سی سی کو میں رنڈر کرتا ہے۔ یہ لائن لے آؤٹ اور گلائف پر مکمل کنٹرول دیتا ہے۔

Core Text کا استعمال کسٹم متن لے آؤٹ کے لیے مناسب ہے: کالمز، تصویر کا لپٹیئی، متن کی گردش، غیر معیاری لائن بریکس۔ Core Text کا NSMutableParagraphStyle ایسے وصفات شامل کرتا ہے جو UIKit میں دستیاب نہیں ہیں: kCTParagraphStyleSpecifierMaximumLineSpacing، kCTParagraphStyleSpecifierLineBreakMode اضافی موڈز کے ساتھ۔

UIKit اور Core Text کے درمیان تبدیل

NSAttributedString UIKit اور Core Text کے درمیان آسانی سے منتقل ہوجاتا ہے، کیونکہ دونوں فریم ورک ایک ہی قسم کے ساتھ کام کرتے ہیں۔ UIKit کے وصفات (NSFontAttributeName، NSForegroundColorAttributeName) Core Text خود بھی پہچانتا ہے، اور اس کے برعکس — Core Text کے وصفات (kCTFontAttributeName) UIKit پڑھتا ہے۔ یہ ایک ہی NSAttributedString آبجیکٹ پر سادہ کاموں کے لیے UIKit اور کسٹم رنڈرنگ کے لیے Core Text استعمال کرنے کی اجازت دیتا ہے۔

اکثر پوچے جانے والے سوالات

NSAttributedString NSString سے کیسے مختلف ہے؟

NSString انداز کی معلومات کے بغیر صرف متن محفوظ کرتا ہے۔ NSAttributedString ہر حرف کی حد کے لیے وصفات کی ایک فرہنگ کے ساتھ متن کو مکمل کرتا ہے۔ text کی خاصیت کے ذریعے UILabel کو بھیجا گیا، NSString سادہ متن کے طور پر ظاہر ہوتا ہے۔ NSAttributedString attributedText کے ذریعے بھیجا گیا، تمام وصفات لاگو ہوتے ہیں: ایک سترنگ میں مختلف فانٹز، رنگ اور فاصلے۔

ایک حد میں متعدد وصفات کیسے شامل کریں؟

وصفات کی ایک فرہنگ کے ساتھ addAttributes(_:range:) کا طریقہ استعمال کریں: addAttributes([.font: font, .foregroundColor: color], range: range)۔ ایک واحد وصف شامل یا تبدیل کرنے کے لیے addAttribute(_:value:range:) استعمال کریں۔ setAttributes کا طریقہ حد میں تمام موجودہ وصفات کو فراہم کردہ وصفات سے بدل دیتا ہے۔

NSAttributedString میں سطر کا فاصلہ کیسے بدلیں؟

ایک NSMutableParagraphStyle تخلیق کریں، lineSpacing کی خاصیت مقرر کریں، پھر اسے NSParagraphStyleAttributeName وصف کی قیمت کے طور پر بھیجیں۔ مکمل کنٹرول کے لیے، minimumLineHeight، maximumLineHeight، paragraphSpacing، lineBreakMode اور alignment بھی دستیاب ہیں۔ ParagraphStyle سطر کا فاصلہ کنٹرول کرنے کا واحد طریقہ ہے۔

کیا وصفات SwiftUI میں کام کرتے ہیں؟

جی ہاں، SwiftUI iOS 15+ میں Text(attributedString:) کے ذریعے NSAttributedString کی حمایت کرتا ہے۔ پرانے ورژنز میں، UILabel یا UITextView کے ساتھ UIViewRepresentable استعمال کریں۔ SwiftUI Markdown کی طرح سینٹکس کے ساتھ اعلانی فارمیٹنگ کے لیے اپنا خود کا AttributedString ٹائپ (Foundation نہیں، SwiftUI) بھی فراہم کرتا ہے۔

NSAttributedString کے سائز کا حساب کیسے لگایں؟

boundingRect(with:options:context:) کا طریقہ استعمال کریں، جو دیے گئے وصفات کے ساتھ سترنگ کو ظاہر کرنے کے لیے درکار CGRect واپس کرتا ہے۔ options کا پیرامیٹر: [.usesLineFragmentOrigin, .usesFontLeading] سطر کے فاصلے اور فانٹ میٹرکس کو مد نظر رکھتا ہے۔ محدود لائنوں کے ساتھ UILabel کے لیے، sizeThatFits استعمال کریں۔

خلاصہ

  • NSAttributedString — iOS میں وصفات کی فرہنگوں کے ذریعے متن کو انداز دینے کے لیے ایک Foundation کلاس
  • وصفات میں فانٹ (UIFont)، رنگ (UIColor)، پیس کی لکیر، سایہ اور پیراگراف کی ترتیبات شامل ہیں
  • NSMutableAttributedString — وصفات شامل اور ہٹانے کے لیے ایک متحرک ورژن
  • addAttributes(_:range:) حروف کی ایک حد پر وصفات کی ایک فرہنگ لاگو کرتا ہے
  • NSParagraphStyle سطر کا فاصلہ، صف بندی اور حاشیہ کو کنٹرول کرتا ہے
  • UILabel، UITextView، UITextField انداز ظاہر کرنے کے لیے attributedText کی حمایت کرتے ہیں
  • Core Text نشیبی سطح کے رنڈرنگ کے لیے وہی NSAttributedString استعمال کرتا ہے

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں