ios – NS在UILabel中的多行中分配字符串

我在一个包含几个元素的单元格中有一个UILabel.我需要标签来归因于可以填充标签高度的字符串,即如果需要则进入多行.我设法实现了这一点,如果我在iOS7上运行应用程序,它似乎很好(忽略黄色背景颜色):

这是UILabel的设置:

NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:[Nsstring stringWithFormat:@"%@  %@",sender,content]];
    NSRange selectedRange = NSMakeRange(0,sender.length); // 4 characters,starting at index 22

    [string beginEditing];

    [string addAttribute:NSFontAttributeName
                   value:[AppereanceConfiguration fontMediumWithSize:18]
                   range:selectedRange];

    [string endEditing];

    self.notificationText.attributedText = string;

self.notificationText是我正在谈论的UILabel.在单元格的xib文件中,我将最小字体大小设置为3,将行数设置为0.正如我之前所说,它在iOS 7上完美运行,但在iOS 6上由于某种原因它不知道如何在它自己的单词包装上它会尝试“截断尾部”,因为这是认情况下在xib中设置的换行模式,导致单元格看起来像这样:

如果我将换行模式更改为Word Wrapping,它会崩溃iOS 6上的应用程序,说:

NSAttributedString invalid for autoresizing,it must have a single spanning paragraph style (or none) with a non-wrapping lineBreakMode.

如何让它在iOS 6上运行?

解决方法

您可以通过执行编译器所声明的操作使其在iOS 6上运行.无论出于何种原因,您需要向NSAttributedString添加NSParagraphStyle属性,以便在iOS 6上运行.

你可以这样做:

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
[YourMutableString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0,[YourMutableString length])];

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...