Jakub Truhlář
Jakub Truhlář

Reputation: 20720

Attachment via NSAttributedStringKey is not visible

The new large title feature can be customised via largeTitleTextAttributes which is (like any other attributes) a dictionary with NSAttributedStringKey keys. One of these keys is NSAttachmentAttributeName/attachment.

Consider this:

let attachment = NSTextAttachment()
attachment.image = UIImage(named: "foo")
attachment.bounds = CGRect(x: 0.0, y: 0.0, width: 20.0, height: 20.0)

var largeTitleTextAttributes: [NSAttributedStringKey: Any] = [:]
largeTitleTextAttributes[.attachment] = attachment
navigationBar.largeTitleTextAttributes = largeTitleTextAttributes

The problem is the attachment I assigned to the largeTitleTextAttributes attribute attachment is not visible.

How to add an attachment into an attributes dictionary so the attachment will be visible? (I'm not looking for the NSAttributedString's init(attachment: NSTextAttachment)

Upvotes: 2

Views: 1178

Answers (2)

Jaydeep Vyas
Jaydeep Vyas

Reputation: 4480

AS Apple's Doc said you can only specifiy

You can specify the font, text color, text shadow color, and text shadow offset for the title in the text attributes dictionary, using the text attribute keys described in NSAttributedStringKey.

But you can directly set UILabel to title view of navigation bar like using following code

let image1Attachment = NSTextAttachment()
        image1Attachment.image = UIImage(named: "bb")
        image1Attachment.bounds = CGRect.init(x: 0.0, y: 0.0, width: 20, height: 20)
        let image1String = NSAttributedString(attachment: image1Attachment)
        let label: UILabel = UILabel.init(frame: (self.navigationController?.navigationBar.frame)!)
        label.attributedText = image1String
        if #available(iOS 11.0, *) {
            self.navigationItem.titleView = label
            }
        else {
            // Fallback on earlier versions
        }

enter image description here

Upvotes: 1

Dave
Dave

Reputation: 534

From looking at Apple's Docs, the list of attributes you can specify in titleTextAttributess seems limited:

You can specify the font, text color, text shadow color, and text shadow offset for the title in the text attributes dictionary, using the text attribute keys described in NSAttributedStringKey.

https://developer.apple.com/documentation/uikit/uinavigationbar/1624953-titletextattributes

Sadly, image attachments isn't on the list.

Upvotes: 0

Related Questions