Làm Nổi Bật Đoạn Text trong iOS UILabel: Hướng Dẫn Chi Tiết

Việc làm nổi bật một đoạn text cụ thể trong UILabel là một thao tác phổ biến trong lập trình iOS. May mắn thay, UIKit cung cấp cho chúng ta nhiều cách tiếp cận để đạt được điều này một cách hiệu quả. Trong bài viết này, chúng ta sẽ cùng nhau khám phá chi tiết cách highlight message (làm nổi bật đoạn text) trong iOS UILabel, từ những kỹ thuật cơ bản đến nâng cao.

Sử dụng NSMutableAttributedString để Highlight Message

NSMutableAttributedString là một lớp trong UIKit cho phép bạn tạo và thao tác với các chuỗi văn bản có định dạng phong phú. Để highlight một phần của UILabel, bạn có thể tạo một NSMutableAttributedString và áp dụng các thuộc tính định dạng mong muốn cho đoạn text cần làm nổi bật.

let label = UILabel()
let fullText = "Đây là một đoạn văn bản ví dụ. Chúng ta sẽ highlight **đoạn này**."

let attributedString = NSMutableAttributedString(string: fullText)
if let range = fullText.range(of: "đoạn này") {
    attributedString.addAttribute(.foregroundColor, value: UIColor.red, range: range)
    attributedString.addAttribute(.font, value: UIFont.boldSystemFont(ofSize: 16), range: range)
}

label.attributedText = attributedString

Trong ví dụ trên, chúng ta đã tạo một NSMutableAttributedString từ chuỗi fullText. Sau đó, chúng ta tìm kiếm vị trí của đoạn text cần highlight (“đoạn này”) và áp dụng các thuộc tính định dạng như màu sắc và font chữ cho đoạn text này. Cuối cùng, chúng ta gán attributedString cho thuộc tính attributedText của UILabel.

Highlight Message bằng NSAttributedString.Key

NSAttributedString.Key cung cấp một bộ các key để xác định các thuộc tính định dạng văn bản cho NSMutableAttributedString.

Dưới đây là một số key phổ biến bạn có thể sử dụng để highlight message:

  • .foregroundColor: Thay đổi màu chữ.
  • .backgroundColor: Thay đổi màu nền của đoạn text.
  • .font: Thay đổi font chữ và kích thước.
  • .underlineStyle: Thêm đường gạch chân.
  • .strikethroughStyle: Thêm đường gạch ngang.
// ... (code từ ví dụ trước)

if let range = fullText.range(of: "đoạn này") {
    attributedString.addAttribute(.backgroundColor, value: UIColor.yellow, range: range)
    attributedString.addAttribute(.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: range)
}

label.attributedText = attributedString

Trong ví dụ này, chúng ta đã thêm màu nền vàng và gạch chân cho đoạn text “đoạn này”.

Xử lý Highlight Message khi UILabel có nhiều định dạng

Khi UILabel của bạn đã có sẵn nhiều định dạng, việc highlight message yêu cầu bạn phải cẩn thận hơn để không làm mất đi các định dạng hiện có. Bạn có thể sử dụng enumerateAttributes để duyệt qua các thuộc tính hiện có và chỉ thay đổi những gì bạn cần.

let label = UILabel()
// ... (UILabel đã có attributed string)

label.attributedText?.enumerateAttributes(in: NSRange(location: 0, length: label.attributedText?.length ?? 0), options: []) { (attributes, range, stop) in
    // Kiểm tra xem đoạn text hiện tại có nằm trong đoạn cần highlight hay không
    if let highlightRange = fullText.range(of: "đoạn này"), highlightRange.overlaps(range) {
        // Tạo một dictionary chứa các thuộc tính mới
        var newAttributes = attributes
        newAttributes[.foregroundColor] = UIColor.red
        newAttributes[.font] = UIFont.boldSystemFont(ofSize: 16)

        // Áp dụng các thuộc tính mới cho đoạn text cần highlight
        (label.attributedText as? NSMutableAttributedString)?.setAttributes(newAttributes, range: range)
    }
}

Kết luận

Bài viết này đã giới thiệu cho bạn cách highlight message trong iOS UILabel sử dụng NSMutableAttributedStringNSAttributedString.Key. Bằng cách áp dụng các kỹ thuật này, bạn có thể dễ dàng tạo ra các UI đẹp mắt và thu hút người dùng hơn.

Bạn cần hỗ trợ? Hãy liên hệ Số Điện Thoại: 0372999996, Email: [email protected] Hoặc đến địa chỉ: 236 Cầu Giấy, Hà Nội. Chúng tôi có đội ngũ chăm sóc khách hàng 24/7.

Author: KarimZenith

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *