আমার একটি ছিল UITextView
যা ফোন নম্বর এবং লিঙ্কগুলি সনাক্ত করে তবে fontColor
এটি আমার ওভাররাইড করে এবং এতে পরিবর্তন করে blueColor
। অটো সনাক্ত করা লিঙ্কগুলির রঙ ফর্ম্যাট করার কোনও উপায় আছে, বা এই ফাংশনের একটি ম্যানুয়াল সংস্করণ চেষ্টা করা উচিত?
আমার একটি ছিল UITextView
যা ফোন নম্বর এবং লিঙ্কগুলি সনাক্ত করে তবে fontColor
এটি আমার ওভাররাইড করে এবং এতে পরিবর্তন করে blueColor
। অটো সনাক্ত করা লিঙ্কগুলির রঙ ফর্ম্যাট করার কোনও উপায় আছে, বা এই ফাংশনের একটি ম্যানুয়াল সংস্করণ চেষ্টা করা উচিত?
উত্তর:
আইওএস 7 উপর আপনি সেট করতে পারেন tintColor
এর UITextView
। এটি লিংকের রঙের পাশাপাশি কার্সার লাইন এবং নির্বাচিত পাঠ্য রঙকে প্রভাবিত করে।
আইওএস 7 কল করাতে একটি নতুন সম্পত্তি যুক্ত করেছে যা আপনাকে লিঙ্ক শৈলীতে পুরোপুরি নিয়ন্ত্রণ করতে দেয় UITextView
বলে linkTextAttributes
মনে হয়।
NSFontAttributeName
সঙ্গে linkTextAttributes
। আমাকে ম্যানুয়ালি আমারNSLinkAttributeName
কোনও ইউআইটিএক্সেক্সটভিউ ব্যবহার করার পরিবর্তে, আমি একটি ইউআইবিউবভিউ ব্যবহার করেছি এবং "স্বয়ংক্রিয় সনাক্তকরণ লিঙ্কগুলি" সক্ষম করেছি। লিঙ্কটির রঙ পরিবর্তন করতে, কেবলমাত্র ট্যাগের জন্য একটি নিয়মিত CSS তৈরি করুন।
আমি এরকম কিছু ব্যবহার করেছি:
NSString * htmlString = [NSString stringWithFormat:@"<html><head><script> document.ontouchmove = function(event) { if (document.body.scrollHeight == document.body.clientHeight) event.preventDefault(); } </script><style type='text/css'>* { margin:0; padding:0; } p { color:black; font-family:Helvetica; font-size:14px; } a { color:#63B604; text-decoration:none; }</style></head><body><p>%@</p></body></html>", [update objectForKey:@"text"]];
webText.delegate = self;
[webText loadHTMLString:htmlString baseURL:nil];
আপনি UIAppearance
সমস্ত পাঠ্য দর্শনগুলির জন্য পরিবর্তনগুলি প্রয়োগ করতে প্রোটোকল ব্যবহার করতে পারেন :
সুইফট 4.x:
UITextView.appearance().linkTextAttributes = [ .foregroundColor: UIColor.red ]
সুইফট 3.x:
UITextView.appearance().linkTextAttributes = [ NSForegroundColorAttributeName: UIColor.red ]
সুইফট 2.x:
UITextView.appearance().linkTextAttributes = [ NSForegroundColorAttributeName: UIColor.redColor() ]
উদ্দেশ্য গ:
[UITextView appearance].linkTextAttributes = @{ NSForegroundColorAttributeName : UIColor.redColor };
উপস্থিতি UITextView
নথিভুক্ত নয়, তবে ভালভাবে কাজ করে।
UIAppearance
নোটগুলি মনে রাখবেন :
কোনও উইন্ডোতে কোনও ভিউ প্রবেশ করলে আইওএস উপস্থিতি পরিবর্তনগুলি প্রয়োগ করে, এটি ইতিমধ্যে একটি উইন্ডোতে থাকা দৃশ্যের চেহারা পরিবর্তন করে না। বর্তমানে একটি উইন্ডোতে থাকা একটি দৃশ্যের উপস্থিতি পরিবর্তন করতে, ভিউয়ের স্তরক্রম থেকে দর্শনটি সরান এবং তারপরে এটি আবার রেখে দিন।
অন্য কথায়: এই কোডটিতে কল করা init()
বা init(coder:)
পদ্ধতিগুলি ইউআই অবজেক্টের উপস্থিতি পরিবর্তন করবে তবে কলিংয়ে loadView()
, বা viewDidLoad()
ভিউকন্ট্রোলারটি তা করবে না ।
আপনি যদি পুরো অ্যাপ্লিকেশনটির জন্য উপস্থিতি সেট করতে চান তবে application(_:didFinishLaunchingWithOptions:)
এই জাতীয় কোডটি কল করার জন্য এটি ভাল জায়গা।
ইউআইটিেক্সটভিউয়ের সমস্যাটি হ'ল linkTextAttributes
এটি স্বয়ংক্রিয়ভাবে সনাক্ত করা সমস্ত লিঙ্কের ক্ষেত্রে প্রযোজ্য। আপনি যদি আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা স্পেসিটি থাকতে চান?
দেখা যাচ্ছে যে এখানে একটি কৌশল আছে: লিঙ্কগুলি পাঠ্য দর্শনের বিশিষ্ট পাঠ্যের অংশ হিসাবে কনফিগার করুন এবং linkTextAttributes
খালি অভিধানে সেট করুন ।
আইওএস 11 / সুইফট 4-তে এখানে একটি উদাহরণ রয়েছে:
// mas is the mutable attributed string we are forming...
// ... and we're going to use as the text view's `attributedText`
mas.append(NSAttributedString(string: "LINK", attributes: [
NSAttributedStringKey.link : URL(string: "https://www.apple.com")!,
NSAttributedStringKey.foregroundColor : UIColor.green,
NSAttributedStringKey.underlineStyle : NSUnderlineStyle.styleSingle.rawValue
]))
// ...
self.tv.attributedText = mas
// this is the important thing:
self.tv.linkTextAttributes = [:]
আপনি নিম্নলিখিত দ্বারা একটি টেক্সটভিউতে হাইপারলিংক রঙ পরিবর্তন করতে পারেন:
নিব ফাইলে আপনি প্রোপার্টি উইন্ডোতে যেতে পারেন এবং যে রঙটি চান তা রঙিনটি পরিবর্তন করতে পারেন change
অথবা আপনি নীচের কোডটি ব্যবহার করে এটিও প্রোগ্রামক্রমে করতে পারেন
[YOURTEXTVIEW setTintColor:[UIColor whiteColor]];
আমি ওয়েবভিউ ব্যবহার না করেই অন্য কোনও উপায় খুঁজে পেয়েছি তবে মনে রাখবেন যে এটি ব্যক্তিগত এপিআই ব্যবহার করে এবং অ্যাপস্টোরে প্রত্যাখ্যান করা যেতে পারে:
সম্পাদনা: ব্যক্তিগত অ্যাপ্লিকেশন ব্যবহারের পরেও আমার অ্যাপ্লিকেশন অ্যাপল দ্বারা অনুমোদিত হয়েছে!
প্রথমে পদ্ধতিগুলি সহ ইউআইটিেক্সটভিউতে একটি বিভাগ ঘোষণা করুন
- (id)contentAsHTMLString;
- (void)setContentToHTMLString:(id)arg1;
তারা কেবল নিম্নলিখিতগুলি করছে:
- (id)contentAsHTMLString;
{
return [super contentAsHTMLString];
}
- (void)setContentToHTMLString:(id)arg1;
{
[super setContentToHTMLString:arg1];
}
রঙিন লিঙ্কগুলির জন্য এখন একটি পদ্ধতি লিখুন:
- (void) colorfillLinks;
{
NSString *contentString = [self.textViewCustomText contentAsHTMLString];
contentString = [contentString stringByReplacingOccurrencesOfString:@"x-apple-data-detectors=\"true\""
withString:@"x-apple-data-detectors=\"true\" style=\"color:white;\""];
[self.textViewCustomText setContentToHTMLString:contentString];
}
এটি সমস্ত ধরণের লিঙ্কগুলিতে একটি নির্দিষ্ট রঙের সাথে শৈলীর বৈশিষ্ট্য নির্ধারণ করে।
ইউআইটিেক্সটভিউগুলি ডিভের মাধ্যমে ওয়েবভিউয়ের মতো রেন্ডার করা হয় যাতে আপনি আরও এগিয়ে গিয়ে প্রতিটি লিঙ্কের ধরণ আলাদাভাবে রঙ করতে পারেন:
<div><a href="http://www.apple.com" x-apple-data-detectors="true" style="color:white;" x-apple-data-detectors-type="link" x-apple-data-detectors-result="0">http://www.apple.com</a></div>
x-apple-data-detectors-type="link"
লিংক সঠিক টাইপ জন্য সূচক
সম্পাদনা
উপর iOS7
আর কাজ এই হল। আইওএস 7-এ আপনি সহজেই রঙিন রঙ নির্ধারণ করে ইউআইটিএক্সটভিউগুলির লিঙ্কের রঙটি পরিবর্তন করতে পারেন। আপনার কল করা উচিত নয়
- (id)contentAsHTMLString;
আর, আপনি একটি ব্যতিক্রম পাবেন। পরিবর্তে আপনি iOS 7 এবং নীচে সমর্থন করতে চাইলে নিম্নলিখিতটি করুন:
- (void) colorfillLinks;
{
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
self.tintColor = [UIColor colorWithRed:79.0/255.0
green:168.0/255.0
blue:224.0/255.0
alpha:1.0];
} else if(![self isFirstResponder ]) {
NSString *contentString = [self contentAsHTMLString];
contentString = [contentString stringByReplacingOccurrencesOfString:@"x-apple-data-detectors=\"true\""
withString:@"x-apple-data-detectors=\"true\" style=\"color:#DDDDDE;\""];
[self setContentToHTMLString:contentString];
}
}
সুইফট 5 উত্তর
সুন্দর এবং সহজ
myTextView.linkTextAttributes = [.foregroundColor: UIColor.white]
সম্পাদনা:
এটি দিয়ে না UITextView
, UIWebView
পরিবর্তে ব্যবহার করুন।
এজন্য আপনাকে স্টাইলশিট তৈরি করতে হবে। আপনার প্রয়োজনীয় রঙ সংমিশ্রণের সাথে সেখানে একটি শ্রেণি সংজ্ঞায়িত করুন-
.headercopy {
font-family: "Helvetica";
font-size: 14px;
line-height: 18px;
font-weight:bold;
color: #25526e;
}
a.headercopy:link {
color:#ffffff;
text-decoration:none;
}
a.headercopy:hover {
color:#00759B;
text-decoration:none;
}
a.headercopy:visited {
color:#ffffff;
text-decoration:none;
}
a.headercopy:hover {
color:#00759B;
text-decoration:none;
}
এইচটিএমএল পৃষ্ঠাটি আপনার মধ্যে এখন 'হেডেরকপি' শ্রেণিটি ব্যবহার করুন-
<b>Fax:</b><a href="tel:646.200.7535" class="headercopy"> 646-200-7535</a><br />
এটি ক্লিক কার্যকারিতা সহ আপনার প্রয়োজনীয় রঙের ফোন নম্বরটি প্রদর্শন করবে।
এই কোডটি কোনও আই-ফোনে ফোন নম্বরটির রঙ সেট করবে তবে স্বয়ংক্রিয় কল লিঙ্কটিকে voids করবে।
<div><a href="#" x-apple-data-detectors="true" style="color:white;" x-apple-data-detectors-type="link" x-apple-data-detectors-result="0">p 0232 963 959</a></div>
এটি আমি সুইফট 5 ব্যবহার করে এটি করেছি:
let attributedString = NSMutableAttributedString(string: myTextView.text ?? "")
myTextView.linkTextAttributes = [NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue): UIColor.whiteColor] as [NSAttributedString.Key: Any]?
myTextView.attributedText = attributedString