swift NSAttributed字符串:图像未显示在UILabel中

6yoyoihd  于 2022-10-31  发布在  Swift
关注(0)|答案(2)|浏览(208)

由于某种原因,图像无法显示。我已经将test.png和test@2x.png都放在Image.xcassets下/我还将其放在项目中。这些都没有帮助。如有任何帮助,将不胜感激。

var testView: UILabel = UILabel(frame: CGRectMake(20, 20, self.view.frame.width-40, self.view.frame.height-40))
 var a = "Testing..."

    var attachment = NSTextAttachment()
    //This is the image that I would like to add 
    // I have dropped test.png and test@2x.png under Image.xcassets

    attachment.image = UIImage(named: "test")

    var attachmentString = NSAttributedString(attachment: attachment)
    let attrsB = NSAttributedString(
        string: "2nd line..Testing testing",
        attributes: NSDictionary(
            object: UIFont(name: "HelveticaNeue", size: 18.0)!,
            forKey: NSFontAttributeName) as [NSObject : AnyObject])

    a.appendAttributedString(attrsB)
    let attributedTextToDisplay = NSMutableAttributedString(attributedString: a)

    attributedTextToDisplay.appendAttributedString(attachmentString)

    testView.attributedText = attributedTextToDisplay

    self.view.addSubview(testView)
vddsk6oq

vddsk6oq1#

如果要显示多行,则需要允许标签具有多行。

var testView: UILabel = UILabel(frame: CGRectMake(20, 20, self.view.frame.width-40, self.view.frame.height-40))
testView.numberOfLines = 0;

小贴士:
1.使用情节提要和界面生成器。所见即所得。
1.使用自动版式,它可以为您解决许多调整大小的问题
1.如果您不确定变量的内容,请使用 asserts
1.进入调试器并按下眼睛图标以显示 quicklook
1.消除所有这些变量将帮助您找出根本原因,而不必担心,比方说,是否加载了您的图像。
为了更好地度量,我还显式地将a键入a:NSMutableAttributedString

var a:NSMutableAttributedString

rhfm7lfc

rhfm7lfc2#

当我在IBOutlet上使用didSet {}时遇到了这个问题,将代码移动到ViewDidLoad()方法解决了这个问题。

相关问题