কীভাবে সুইফটে আন্ডারলাইন করবেন UILabel
? আমি অবজেক্টিভ-সিগুলি অনুসন্ধান করেছি কিন্তু এগুলি সুইফটে কাজ করতে বেশিরভাগই পেতে পারি নি।
কীভাবে সুইফটে আন্ডারলাইন করবেন UILabel
? আমি অবজেক্টিভ-সিগুলি অনুসন্ধান করেছি কিন্তু এগুলি সুইফটে কাজ করতে বেশিরভাগই পেতে পারি নি।
উত্তর:
আপনি এনএসএট্রিবিউটেড স্ট্রিং ব্যবহার করে এটি করতে পারেন
উদাহরণ:
let underlineAttribute = [NSAttributedString.Key.underlineStyle: NSUnderlineStyle.thick.rawValue]
let underlineAttributedString = NSAttributedString(string: "StringWithUnderLine", attributes: underlineAttribute)
myLabel.attributedText = underlineAttributedString
সম্পাদনা
একটি ইউআইএলবেলের সমস্ত পাঠ্যের জন্য একই বৈশিষ্ট্যগুলি পেতে, আমি আপনাকে ইউআইএলবেল এবং ওভাররাইডিং পাঠ্যটিকে সাবক্লাস করার পরামর্শ দিই:
সুইফট 4.2
class UnderlinedLabel: UILabel {
override var text: String? {
didSet {
guard let text = text else { return }
let textRange = NSMakeRange(0, text.count)
let attributedText = NSMutableAttributedString(string: text)
attributedText.addAttribute(NSAttributedString.Key.underlineStyle , value: NSUnderlineStyle.single.rawValue, range: textRange)
// Add other attributes if needed
self.attributedText = attributedText
}
}
}
সুইফট 3.0
class UnderlinedLabel: UILabel {
override var text: String? {
didSet {
guard let text = text else { return }
let textRange = NSMakeRange(0, text.characters.count)
let attributedText = NSMutableAttributedString(string: text)
attributedText.addAttribute(NSUnderlineStyleAttributeName , value: NSUnderlineStyle.styleSingle.rawValue, range: textRange)
// Add other attributes if needed
self.attributedText = attributedText
}
}
}
এবং আপনি আপনার পাঠ্যটি এভাবে রেখেছেন:
@IBOutlet weak var label: UnderlinedLabel!
override func viewDidLoad() {
super.viewDidLoad()
label.text = "StringWithUnderLine"
}
পুরানো:
সুইফ্ট (2.0 থেকে 2.3):
class UnderlinedLabel: UILabel {
override var text: String? {
didSet {
guard let text = text else { return }
let textRange = NSMakeRange(0, text.characters.count)
let attributedText = NSMutableAttributedString(string: text)
attributedText.addAttribute(NSUnderlineStyleAttributeName, value:NSUnderlineStyle.StyleSingle.rawValue, range: textRange)
// Add other attributes if needed
self.attributedText = attributedText
}
}
}
সুইফট 1.2:
class UnderlinedLabel: UILabel {
override var text: String! {
didSet {
let textRange = NSMakeRange(0, count(text))
let attributedText = NSMutableAttributedString(string: text)
attributedText.addAttribute(NSUnderlineStyleAttributeName, value:NSUnderlineStyle.StyleSingle.rawValue, range: textRange)
// Add other attributes if needed
self.attributedText = attributedText
}
}
}
UTF16
আপনার পাঠ্যরঞ্জ তৈরি করার সময় আপনার অক্ষর গণনার পরিবর্তে গণনাটি পাস করা উচিতNSRange
required init?(coder: NSCoder) { super.init(coder: coder) self.addUnderline() // your code }
সুইফট 5 এবং 4.2 একটি লাইনার:
label.attributedText = NSAttributedString(string: "Text", attributes:
[.underlineStyle: NSUnderlineStyle.single.rawValue])
সুইফট 4 ওয়ান লাইনার:
label.attributedText = NSAttributedString(string: "Text", attributes:
[.underlineStyle: NSUnderlineStyle.styleSingle.rawValue])
সুইফট 3 ওয়ান লাইনার:
label.attributedText = NSAttributedString(string: "Text", attributes:
[NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue])
যদি আপনি উত্তরাধিকার ছাড়াই এটি করার উপায় খুঁজছেন:
extension UILabel {
func underline() {
if let textString = self.text {
let attributedString = NSMutableAttributedString(string: textString)
attributedString.addAttribute(NSAttributedString.Key.underlineStyle,
value: NSUnderlineStyle.single.rawValue,
range: NSRange(location: 0, length: attributedString.length))
attributedText = attributedString
}
}
}
// in swift 4 - switch NSUnderlineStyleAttributeName with NSAttributedStringKey.underlineStyle
extension UILabel {
func underline() {
if let textString = self.text {
let attributedString = NSMutableAttributedString(string: textString)
attributedString.addAttribute(NSUnderlineStyleAttributeName, value: NSUnderlineStyle.styleSingle.rawValue, range: NSRange(location: 0, length: attributedString.length))
attributedText = attributedString
}
}
}
extension UIButton {
func underline() {
let attributedString = NSMutableAttributedString(string: (self.titleLabel?.text!)!)
attributedString.addAttribute(NSUnderlineStyleAttributeName, value: NSUnderlineStyle.styleSingle.rawValue, range: NSRange(location: 0, length: (self.titleLabel?.text!.characters.count)!))
self.setAttributedTitle(attributedString, for: .normal)
}
}
UTF16
আপনার তৈরি করার সময় আপনার অক্ষর গণনার পরিবর্তে গণনা পাস করা উচিতNSRange
extension String {
var underLined: NSAttributedString {
NSMutableAttributedString(string: self, attributes: [.underlineStyle: NSUnderlineStyle.single.rawValue])
}
}
বোতামগুলিতে:
button.setAttributedTitle(yourButtonTitle.underLined, for: .normal)
লেবেলে:
label.attributedText = yourLabelTitle.underLined
সুইফট 4 এবং এক্সকোড 9- এ শ্লোম উত্তরের জন্য সামান্য ফিক্স ।
extension UILabel {
func underline() {
if let textString = self.text {
let attributedString = NSMutableAttributedString(string: textString)
attributedString.addAttribute(NSAttributedStringKey.underlineStyle,
value: NSUnderlineStyle.styleSingle.rawValue,
range: NSRange(location: 0, length: attributedString.length - 1))
attributedText = attributedString
}
}
}
extension UIButton {
func underline() {
let attributedString = NSMutableAttributedString(string: (self.titleLabel?.text!)!)
attributedString.addAttribute(NSAttributedStringKey.underlineStyle,
value: NSUnderlineStyle.styleSingle.rawValue,
range: NSRange(location: 0, length: (self.titleLabel?.text!.count)!))
self.setAttributedTitle(attributedString, for: .normal)
}
}
UTF16
আপনার তৈরি করার সময় আপনার অক্ষর গণনার পরিবর্তে গণনা পাস করা উচিতNSRange
আপনি UILabel
ইন্টারফেস বিল্ডার ব্যবহার করে পাঠ্যটিকে আন্ডারলাইন করতে পারেন ।
আমার উত্তরের লিঙ্কটি এখানে: স্টোরিবোর্ডে আংশিক পাঠ্য UILabel এর আন্ডারলাইন বৈশিষ্ট্য যুক্ত করা
সুইফটে একই উত্তর 4.2
জন্য UILable
extension UILabel {
func underline() {
if let textString = self.text {
let attributedString = NSMutableAttributedString(string: textString)
attributedString.addAttribute(NSAttributedString.Key.underlineStyle,
value: NSUnderlineStyle.single.rawValue,
range: NSRange(location: 0, length: textString.count))
self.attributedText = attributedString
}
}
}
নীচের মতো ইউআইএলবেলের জন্য কল করুন
myLable.underline()
জন্য UIButton
extension UIButton {
func underline() {
if let textString = self.titleLabel?.text {
let attributedString = NSMutableAttributedString(string: textString)
attributedString.addAttribute(NSAttributedString.Key.underlineStyle,
value: NSUnderlineStyle.single.rawValue,
range: NSRange(location: 0, length: textString.count))
self.setAttributedTitle(attributedString, for: .normal)
}
}
}
নীচের মত ইউআইবাটন জন্য কল করুন
myButton.underline()
আমি উপরের উত্তরগুলিতে সন্ধান করেছি এবং সেগুলির মধ্যে কয়েকটি জোর করে পাঠানো মানকে আবদ্ধ করা হচ্ছে । আমি নিরাপদে আন-র্যাপিং করে মান পাওয়ার পরামর্শ দেব। এটি শূন্যমূল্যের ক্ষেত্রে ক্রাশ এড়ানো হবে। আশাকরি এটা সাহায্য করবে :)
UTF16
আপনার তৈরি করার সময় আপনার অক্ষর গণনার পরিবর্তে গণনা পাস করা উচিতNSRange
সুইফট 4, 4.2 এবং 5।
@IBOutlet weak var lblUnderLine: UILabel!
আমাকে ইউআইএলবেলে নির্দিষ্ট পাঠ্যরেখাটি আন্ডারলাইন করা দরকার। সুতরাং, পরিসীমা এবং সেট বৈশিষ্ট্যগুলি সন্ধান করুন।
let strSignup = "Don't have account? SIGNUP NOW."
let rangeSignUp = NSString(string: strSignup).range(of: "SIGNUP NOW.", options: String.CompareOptions.caseInsensitive)
let rangeFull = NSString(string: strSignup).range(of: strSignup, options: String.CompareOptions.caseInsensitive)
let attrStr = NSMutableAttributedString.init(string:strSignup)
attrStr.addAttributes([NSAttributedString.Key.foregroundColor : UIColor.white,
NSAttributedString.Key.font : UIFont.init(name: "Helvetica", size: 17)! as Any],range: rangeFull)
attrStr.addAttributes([NSAttributedString.Key.foregroundColor : UIColor.white,
NSAttributedString.Key.font : UIFont.init(name: "Helvetica", size: 20)!,
NSAttributedString.Key.underlineStyle: NSUnderlineStyle.thick.rawValue as Any],range: rangeSignUp) // for swift 4 -> Change thick to styleThick
lblUnderLine.attributedText = attrStr
আউটপুট
একটি বাক্যে একাধিক স্ট্রিংয়ে আন্ডারলাইন করুন।
extension UILabel {
func underlineMyText(range1:String, range2:String) {
if let textString = self.text {
let str = NSString(string: textString)
let firstRange = str.range(of: range1)
let secRange = str.range(of: range2)
let attributedString = NSMutableAttributedString(string: textString)
attributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: firstRange)
attributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: secRange)
attributedText = attributedString
}
}
}
এইভাবে ব্যবহার করুন।
lbl.text = "By continuing you agree to our Terms of Service and Privacy Policy."
lbl.underlineMyText(range1: "Terms of Service", range2: "Privacy Policy.")
সুইফট 4 পরিবর্তন। NSUnderlineStyle.styleSingle এর পরিবর্তে NSUnderlineStyle.styleSingle.rawValue ব্যবহার করার জন্য স্মরণকারী ।
'let attributedString = NSAttributedString(string: "Testing")
let textRange = NSMakeRange(0, attributedString.length)
let underlinedMessage = NSMutableAttributedString(attributedString: attributedString)
underlinedMessage.addAttribute(NSAttributedStringKey.underlineStyle,
value:NSUnderlineStyle.styleSingle.rawValue,
range: textRange)
label.attributedText = underlinedMessage
`
আপনি যদি আন্ডারলাইন হিসাবে লেবেলের কেবলমাত্র অর্ধেক অংশ অর্জন করতে চান তবে আপনি এটি ব্যবহার করতে পারেন: - // সুইফট 4.0+ এর জন্য
let attributesForUnderLine: [NSAttributedString.Key: Any] = [
.font: UIFont(name: AppFont.sourceSansPro_Regular, size: 12) ?? UIFont.systemFont(ofSize: 11),
.foregroundColor: UIColor.blue,
.underlineStyle: NSUnderlineStyle.single.rawValue]
let attributesForNormalText: [NSAttributedString.Key: Any] = [
.font: UIFont(name: AppFont.sourceSansPro_Regular, size: 12) ?? UIFont.systemFont(ofSize: 11),
.foregroundColor: AppColors.ColorText_787878]
let textToSet = "Want to change your preferences? Edit Now"
let rangeOfUnderLine = (textToSet as NSString).range(of: "Edit Now")
let rangeOfNormalText = (textToSet as NSString).range(of: "Want to change your preferences?")
let attributedText = NSMutableAttributedString(string: textToSet)
attributedText.addAttributes(attributesForUnderLine, range: rangeOfUnderLine)
attributedText.addAttributes(attributesForNormalText, range: rangeOfNormalText)
yourLabel.attributedText = attributedText
উপরের উত্তরটি আমার বিল্ড পরিবেশে ত্রুটি ঘটায়।
এটি সুইফট ৪.০ এ কাজ করে না:
attributedText.addAttribute(NSUnderlineStyleAttributeName,
value: NSUnderlineStyle.styleSingle.rawValue,
range: textRange)
পরিবর্তে এটি চেষ্টা করুন:
attributedText.addAttribute(NSAttributedStringKey.underlineStyle,
value: NSUnderlineStyle.styleSingle.rawValue,
range: textRange)
আশা করি এটি কাউকে সাহায্য করবে
// সুইফট 4 সংস্করণ
let attributedString = NSMutableAttributedString(string: "Your Text Here", attributes: [NSAttributedStringKey.underlineStyle : true])
self.yourlabel.attributedText = attributedString
সুইফট ২.৩ এর জন্য
extension UIButton {
func underline() {
let attributedString = NSMutableAttributedString(string: (self.titleLabel?.text!)!)
attributedString.addAttribute(NSUnderlineStyleAttributeName, value: NSUnderlineStyle.StyleSingle.rawValue, range: NSRange(location: 0, length: (self.titleLabel?.text!.characters.count)!))
self.setAttributedTitle(attributedString, forState: .Normal)
}
}
এবং ভিউকন্ট্রোলারে
@IBOutlet var yourButton: UIButton!
মধ্যে ViewDidLoad
পদ্ধতি অথবা আপনার ফাংশন শুধু লেখ
yourButton.underline()
এটি আপনার বোতামের শিরোনামটিকে আন্ডারলাইন করবে
সুইফট 5 এর জন্য ইউআইবিউটনের জন্য আন্ডারলাইন সেট করা এবং মুছে ফেলার জন্য একটি শ্রেণি I আমি আশা করি এটি সাহায্য করবে
import Foundation
import UIKit
class UiUtil {
static let underlineThickness = 2
class func removeUnderlineFromButton( _ button:UIButton ) {
if let str = button.titleLabel?.attributedText {
let attributedString = NSMutableAttributedString( attributedString: str )
attributedString.removeAttribute(.underlineStyle, range:
NSRange.init(location: 0, length: attributedString.length))
button.setAttributedTitle(attributedString, for: .normal)
}
}
class func setUnderlineFromButton( _ button:UIButton ) {
if let str = button.titleLabel?.attributedText {
let attributedStringUnderline = NSMutableAttributedString( attributedString:
str )
attributedStringUnderline.addAttribute(
NSAttributedString.Key.underlineStyle,
value: underlineThickness,
range: NSRange.init(location: 0, length: attributedStringUnderline.length)
)
button.setAttributedTitle(attributedStringUnderline, for: .normal)
}
}
}
NSAttributedString
?