উত্তর:
এটি করার উপায়টি এটির NSAttributedString
মতো ব্যবহার করা :
NSMutableAttributedString *text =
[[NSMutableAttributedString alloc]
initWithAttributedString: label.attributedText];
[text addAttribute:NSForegroundColorAttributeName
value:[UIColor redColor]
range:NSMakeRange(10, 1)];
[label setAttributedText: text];
আমি একটি তৈরি করে এই কাজ করেছেন category
জন্যNSMutableAttributedString
-(void)setColorForText:(NSString*) textToFind withColor:(UIColor*) color
{
NSRange range = [self.mutableString rangeOfString:textToFind options:NSCaseInsensitiveSearch];
if (range.location != NSNotFound) {
[self addAttribute:NSForegroundColorAttributeName value:color range:range];
}
}
এটি ব্যবহার করুন
- (void) setColoredLabel
{
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"Here is a red blue and green text"];
[string setColorForText:@"red" withColor:[UIColor redColor]];
[string setColorForText:@"blue" withColor:[UIColor blueColor]];
[string setColorForText:@"green" withColor:[UIColor greenColor]];
mylabel.attributedText = string;
}
সুইফট 3
extension NSMutableAttributedString{
func setColorForText(_ textToFind: String, with color: UIColor) {
let range = self.mutableString.range(of: textToFind, options: .caseInsensitive)
if range.location != NSNotFound {
addAttribute(NSForegroundColorAttributeName, value: color, range: range)
}
}
}
, USAGE
func setColoredLabel() {
let string = NSMutableAttributedString(string: "Here is a red blue and green text")
string.setColorForText("red", with: #colorLiteral(red: 0.9254902005, green: 0.2352941185, blue: 0.1019607857, alpha: 1))
string.setColorForText("blue", with: #colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1))
string.setColorForText("green", with: #colorLiteral(red: 0.3411764801, green: 0.6235294342, blue: 0.1686274558, alpha: 1))
mylabel.attributedText = string
}
সুইফট 4 @ কেজে 13 জানার জন্য ধন্যবাদ
// If no text is send, then the style will be applied to full text
func setColorForText(_ textToFind: String?, with color: UIColor) {
let range:NSRange?
if let text = textToFind{
range = self.mutableString.range(of: text, options: .caseInsensitive)
}else{
range = NSMakeRange(0, self.length)
}
if range!.location != NSNotFound {
addAttribute(NSAttributedStringKey.foregroundColor, value: color, range: range!)
}
}
আমি গুণাবলী নিয়ে আরও পরীক্ষা-নিরীক্ষা করেছি এবং এর ফলাফলগুলি নীচে, এখানে উত্সকোড
ফলাফল এখানে
আপনি এখানে যান
NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:lblTemp.text];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,5)];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(5,6)];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(11,5)];
lblTemp.attributedText = string;
সুইফট 4
// An attributed string extension to achieve colors on text.
extension NSMutableAttributedString {
func setColor(color: UIColor, forText stringValue: String) {
let range: NSRange = self.mutableString.range(of: stringValue, options: .caseInsensitive)
self.addAttribute(NSAttributedStringKey.foregroundColor, value: color, range: range)
}
}
// Try it with label
let label = UILabel()
label.frame = CGRect(x: 70, y: 100, width: 260, height: 30)
let stringValue = "There are 5 results."
let attributedString: NSMutableAttributedString = NSMutableAttributedString(string: stringValue)
attributedString.setColor(color: UIColor.red, forText: "5")
label.font = UIFont.systemFont(ofSize: 26)
label.attributedText = attributedString
self.view.addSubview(label)
ফলাফল
সুইফট 3
func setColoredLabel() {
var string: NSMutableAttributedString = NSMutableAttributedString(string: "redgreenblue")
string.setColor(color: UIColor.redColor(), forText: "red")
string.setColor(color: UIColor.greenColor(), forText: "green")
string.setColor(color: UIColor.blueColor(, forText: "blue")
mylabel.attributedText = string
}
func setColor(color: UIColor, forText stringValue: String) {
var range: NSRange = self.mutableString.rangeOfString(stringValue, options: NSCaseInsensitiveSearch)
if range != nil {
self.addAttribute(NSForegroundColorAttributeName, value: color, range: range)
}
}
ফলাফল:
//NSString *myString = @"I have to replace text 'Dr Andrew Murphy, John Smith' ";
NSString *myString = @"Not a member?signin";
//Create mutable string from original one
NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:myString];
//Fing range of the string you want to change colour
//If you need to change colour in more that one place just repeat it
NSRange range = [myString rangeOfString:@"signin"];
[attString addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:(63/255.0) green:(163/255.0) blue:(158/255.0) alpha:1.0] range:range];
//Add it to the label - notice its not text property but it's attributeText
_label.attributedText = attString;
যেহেতু আইওএস 6 , UIKit সমর্থন করে আরোপিত স্ট্রিং অঙ্কন তাই কোনও এক্সটেনশন বা প্রতিস্থাপন প্রয়োজন হয়।
থেকে UILabel
:
@property(nonatomic, copy) NSAttributedString *attributedText;
আপনার কেবল নিজের তৈরি করা দরকার NSAttributedString
। মূলত দুটি উপায় রয়েছে:
একই বৈশিষ্ট্যযুক্ত পাঠ্যের অংশগুলি যুক্ত করুন - প্রতিটি অংশের জন্য একটি NSAttributedString
উদাহরণ তৈরি করুন এবং সেগুলিতে একটিতে যুক্ত করুনNSMutableAttributedString
সরল স্ট্রিং থেকে বিশিষ্ট পাঠ্য তৈরি করুন এবং তারপরে প্রদত্ত রেঞ্জগুলির জন্য বিশিষ্ট যুক্ত করুন - আপনার সংখ্যার (বা যাই হোক না কেন) সীমাটি সন্ধান করুন এবং এতে বর্ণের বিভিন্ন বৈশিষ্ট্য প্রয়োগ করুন।
অনুপস দ্রুত উত্তর। যে কোনও ক্লাস থেকে পুনরায় ব্যবহার করা যেতে পারে।
দ্রুত ফাইলের মধ্যে
extension NSMutableAttributedString {
func setColorForStr(textToFind: String, color: UIColor) {
let range = self.mutableString.rangeOfString(textToFind, options:NSStringCompareOptions.CaseInsensitiveSearch);
if range.location != NSNotFound {
self.addAttribute(NSForegroundColorAttributeName, value: color, range: range);
}
}
}
কিছু দৃশ্যে নিয়ন্ত্রক
let attributedString: NSMutableAttributedString = NSMutableAttributedString(string: self.labelShopInYourNetwork.text!);
attributedString.setColorForStr("YOUR NETWORK", color: UIColor(red: 0.039, green: 0.020, blue: 0.490, alpha: 1.0));
self.labelShopInYourNetwork.attributedText = attributedString;
এই পরিস্থিতিতে ইউআইবিবেল ভিউ বা একাধিক ইউআইএলবেল থাকা ওভারকিল হিসাবে বিবেচিত হতে পারে।
আমার পরামর্শটি টিটিটিএটিগ্রিবিউটেবল লেবেল ব্যবহার করা হবে যা ইউআইএলবেলের জন্য একটি ড্রপ-ইন প্রতিস্থাপন যা এনএসএট্রিবিউটড স্ট্রিং সমর্থন করে । এর অর্থ আপনি খুব সহজেই স্ট্রিংয়ের বিভিন্ন পরিসরে বিভিন্ন স্টাইল প্রয়োগ করতে পারেন।
সংক্ষিপ্ত, ফর্ম্যাটযুক্ত পাঠ্য প্রদর্শন করার জন্য যা সম্পাদনাযোগ্য হতে হবে না, কোর পাঠ্য পথটি । লেবেলগুলির জন্য বেশ কয়েকটি ওপেন-সোর্স প্রকল্প রয়েছে যা ব্যবহারের জন্য NSAttributedString
এবং রেন্ডারিংয়ের জন্য মূল পাঠ্য রয়েছে। উদাহরণস্বরূপ কোরটেক্সটআট্রিবিউটেড লেবেল বা ওএএচটিগ্রিবিউটেড লেবেল দেখুন ।
NSAttributedString
যাবার উপায় নিম্নলিখিত প্রশ্নের একটি দুর্দান্ত উত্তর রয়েছে যা আপনাকে এটি কীভাবে করতে হয় তা দেখায় যে আপনি এনএসএট্রিবিউটড স্ট্রিং কীভাবে ব্যবহার করবেন
জেটিএ টিট্রিবিউটেড লেবেল ( মাইস্টক্লোর দ্বারা) আপনাকে আইওএস 6 এর অধীনে ইউআইএলবেলে এবং তার সাথে জেটিটিআউটবিউটেবল লেবেল শ্রেণিকে আইওএস 5 এর অধীনে ইউটিআইবিবেলে গুণিত স্ট্রিং সমর্থনটি ব্যবহার করতে দেয়।
একটি সুইফট 3.0 সমাধান রয়েছে
extension UILabel{
func setSubTextColor(pSubString : String, pColor : UIColor){
let attributedString: NSMutableAttributedString = NSMutableAttributedString(string: self.text!);
let range = attributedString.mutableString.range(of: pSubString, options:NSString.CompareOptions.caseInsensitive)
if range.location != NSNotFound {
attributedString.addAttribute(NSForegroundColorAttributeName, value: pColor, range: range);
}
self.attributedText = attributedString
}
}
এবং কল একটি উদাহরণ আছে:
let colorString = " (string in red)"
self.mLabel.text = "classic color" + colorString
self.mLabel.setSubTextColor(pSubString: colorString, pColor: UIColor.red)
সুইফট 4 এবং তারপরের : আনুপ 4real সমাধান দ্বারা অনুপ্রাণিত , এখানে একটি স্ট্রিং এক্সটেনশান যা 2 টি ভিন্ন বর্ণের সাথে পাঠ্য উত্পন্ন করতে ব্যবহার করা যেতে পারে।
extension String {
func attributedStringForPartiallyColoredText(_ textToFind: String, with color: UIColor) -> NSMutableAttributedString {
let mutableAttributedstring = NSMutableAttributedString(string: self)
let range = mutableAttributedstring.mutableString.range(of: textToFind, options: .caseInsensitive)
if range.location != NSNotFound {
mutableAttributedstring.addAttribute(NSAttributedStringKey.foregroundColor, value: color, range: range)
}
return mutableAttributedstring
}
}
নীচের উদাহরণটি বাকী লেখার জন্য মূল লেবেলের রঙ ধরে রাখার সময় নক্ষত্রের রঙকে লালচে পরিবর্তন করে।
label.attributedText = "Enter username *".attributedStringForPartiallyColoredText("*", with: #colorLiteral(red: 1, green: 0, blue: 0, alpha: 1))
আমার জবাবটিতে একটি পাঠ্যের সমস্ত ঘটনা কেবল রঙিন করার বিকল্প রয়েছে: "ওয়া বা ওয়া বা দুবদব", আপনি কেবলমাত্র গৃহীত উত্তরের মতো প্রথম ঘটনাটিই রঙ করতে পারবেন না।
extension NSMutableAttributedString{
func setColorForText(_ textToFind: String, with color: UIColor) {
let range = self.mutableString.range(of: textToFind, options: .caseInsensitive)
if range.location != NSNotFound {
addAttribute(NSForegroundColorAttributeName, value: color, range: range)
}
}
func setColorForAllOccuranceOfText(_ textToFind: String, with color: UIColor) {
let inputLength = self.string.count
let searchLength = textToFind.count
var range = NSRange(location: 0, length: self.length)
while (range.location != NSNotFound) {
range = (self.string as NSString).range(of: textToFind, options: [], range: range)
if (range.location != NSNotFound) {
self.addAttribute(NSForegroundColorAttributeName, value: color, range: NSRange(location: range.location, length: searchLength))
range = NSRange(location: range.location + range.length, length: inputLength - (range.location + range.length))
}
}
}
}
এখন আপনি এটি করতে পারেন:
let message = NSMutableAttributedString(string: "wa ba wa ba dubdub")
message.setColorForText(subtitle, with: UIColor.red)
// or the below one if you want all the occurrence to be colored
message.setColorForAllOccuranceOfText("wa", with: UIColor.red)
// then you set this attributed string to your label :
lblMessage.attributedText = message
জন্য Xamarin ব্যবহারকারীদের আমি একটি স্ট্যাটিক আছে C # এর পদ্ধতি যেখানে আমি স্ট্রিং একটি অ্যারের মধ্যে পাস, UIColours এবং UIFonts এর অ্যারের একটি অ্যারের (তারা দৈর্ঘ্যে মেলা দরকার হবে)। এরপরে বিশিষ্ট স্ট্রিংটি আবার পাস করা হয়।
দেখা:
public static NSMutableAttributedString GetFormattedText(string[] texts, UIColor[] colors, UIFont[] fonts)
{
NSMutableAttributedString attrString = new NSMutableAttributedString(string.Join("", texts));
int position = 0;
for (int i = 0; i < texts.Length; i++)
{
attrString.AddAttribute(new NSString("NSForegroundColorAttributeName"), colors[i], new NSRange(position, texts[i].Length));
var fontAttribute = new UIStringAttributes
{
Font = fonts[i]
};
attrString.AddAttributes(fontAttribute, new NSRange(position, texts[i].Length));
position += texts[i].Length;
}
return attrString;
}
আমার ক্ষেত্রে আমি এক্সকোড 10.1 ব্যবহার করছি। ইন্টারফেস বিল্ডারে লেবেল পাঠ্যে সমতল পাঠ্য এবং বৈশিষ্ট্যযুক্ত পাঠ্যের মধ্যে স্যুইচ করার বিকল্প রয়েছে
আশা করি এটি অন্য কাউকে সাহায্য করতে পারে ..!
extension UILabel{
func setSubTextColor(pSubString : String, pColor : UIColor){
let attributedString: NSMutableAttributedString = self.attributedText != nil ? NSMutableAttributedString(attributedString: self.attributedText!) : NSMutableAttributedString(string: self.text!);
let range = attributedString.mutableString.range(of: pSubString, options:NSString.CompareOptions.caseInsensitive)
if range.location != NSNotFound {
attributedString.addAttribute(NSForegroundColorAttributeName, value: pColor, range: range);
}
self.attributedText = attributedString
}
}
আমার নিজস্ব সমাধানটি পরবর্তী পদ্ধতির মতো একটি পদ্ধতি তৈরি করা হয়েছিল:
-(void)setColorForText:(NSString*) textToFind originalText:(NSString *)originalString withColor:(UIColor*)color andLabel:(UILabel *)label{
NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:originalString];
NSRange range = [originalString rangeOfString:textToFind];
[attString addAttribute:NSForegroundColorAttributeName value:color range:range];
label.attributedText = attString;
if (range.location != NSNotFound) {
[attString addAttribute:NSForegroundColorAttributeName value:color range:range];
}
label.attributedText = attString; }
এটি একই লেখায় কেবল একটি ভিন্ন রঙের সাথে কাজ করেছে তবে আপনি একই বাক্যে আরও রঙে সহজেই তা খাপ খাইয়ে নিতে পারেন।
নীচের কোড ব্যবহার করে আপনি শব্দের উপর ভিত্তি করে একাধিক রং সেট করতে পারেন।
NSMutableArray * array = [[NSMutableArray alloc] initWithObjects:@"1 ball",@"2 ball",@"3 ball",@"4 ball", nil];
NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] init];
for (NSString * str in array)
{
NSMutableAttributedString * textstr = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@ ,",str] attributes:@{NSForegroundColorAttributeName :[self getRandomColor]}];
[attStr appendAttributedString:textstr];
}
UILabel *lab = [[UILabel alloc] initWithFrame:CGRectMake(10, 300, 300, 30)];
lab.attributedText = attStr;
[self.view addSubview:lab];
-(UIColor *) getRandomColor
{
CGFloat redcolor = arc4random() % 255 / 255.0;
CGFloat greencolor = arc4random() % 255 / 255.0;
CGFloat bluencolor = arc4random() % 255 / 255.0;
return [UIColor colorWithRed:redcolor green:greencolor blue:bluencolor alpha:1.0];
}
SwiftRichString
নিখুঁত কাজ করে! আপনি +
দুটি বৈশিষ্ট্যযুক্ত স্ট্রিং সংযুক্ত করতে ব্যবহার করতে পারেন