এই হল. attributedTextসমভূমিতে ফিরে যাওয়ার আগে এটির সাথে কাজ করেtext একইসাথে যা একাধিক ফন্ট পরিবার, আকার এবং এমনকি এনএসটিএক্সটাক অ্যাচটাচমেন্টের সাথে আমাদের व्यवहार করে এমন লোকদের জন্য প্রচুর অর্থবোধ করে!
অটোলেআউট দিয়ে সূক্ষ্মভাবে কাজ করে, তবে স্পষ্টতই সীমাবদ্ধতাগুলি অবশ্যই আমাদের চেক করার আগে সংজ্ঞায়িত করতে হবে এবং সেট করতে হবে isTruncated, অন্যথায় লেবেল নিজেই জানবে না কীভাবে নিজেকে কীভাবে ছড়িয়ে দেওয়া যায়, তাই এটি কেটে যাবে কিনা তা এমনকি কোনওভাবেই এটি জানতেও পারে না।
এটি কেবল একটি সরল NSStringএবং দিয়ে এই সমস্যাটির সাথে যোগাযোগ করতে কাজ করে না sizeThatFits। আমি নিশ্চিত না যে কীভাবে লোকেরা ইতিবাচক ফলাফল পাচ্ছে। বিটিডাব্লু, যেমন অসংখ্যবার উল্লেখ করা হয়েছে, ব্যবহার sizeThatFitsমোটেই আদর্শ নয় কারণ এটি numberOfLinesফলাফলের আকারের জন্য বিবেচনায় নেয় , যা আমরা যা করার চেষ্টা করছি তার পুরো উদ্দেশ্যকে পরাস্ত করে, কারণ এটি কেটে বা না ছাড়াই isTruncatedসর্বদা ফিরে আসবে wouldfalse
extension UILabel {
var isTruncated: Bool {
layoutIfNeeded()
let rectBounds = CGSize(width: bounds.width, height: .greatestFiniteMagnitude)
var fullTextHeight: CGFloat?
if attributedText != nil {
fullTextHeight = attributedText?.boundingRect(with: rectBounds, options: .usesLineFragmentOrigin, context: nil).size.height
} else {
fullTextHeight = text?.boundingRect(with: rectBounds, options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: font], context: nil).size.height
}
return (fullTextHeight ?? 0) > bounds.size.height
}
}