我有一个UILabel设置自动布局,其高度基于其内在的内容大小,当它有更多的行时它会变得更高.我需要它在同一视图中与其他元素一起居中.一切都默认,它工作得很好.
但是,我使用的是自定义字体,其中有太多空间.我已经设置了一个NSMutableParagraphStyle,如下所示:
NSMutableParagraphStyle *headlineParagraphStyle = [NSMutableParagraphStyle new]; headlineParagraphStyle.lineSpacing = 0.0f; headlineParagraphStyle.maximumLineHeight = 20.0f; headlineParagraphStyle.hyphenationFactor = 0.0f; headlineParagraphStyle.alignment = NSTextAlignmentLeft;
然后我创建并设置NSAttributedString作为UILabel的-attributedText:
NSString *uppercaseHeadline = self.currentStory.headline.uppercaseString; NSAttributedString *attributedHeadline = [[NSAttributedString alloc] initWithString:uppercaseHeadline attributes:@{NSParagraphStyleAttributeName: headlineParagraphStyle}]; self.headlineLabel.attributedText = attributedHeadline;
结果是文本看起来没问题,但是它被推到UILabel的顶部上方并在顶部被剪掉,而标签底部还有额外的空间:
这也会导致其他项目与此标签中的文本居中,因为您可以看到两条线之间的空间与标签框架的中心不对齐.
如何告诉UILabel重新输入此文本,以便顶部不会剪辑并且底部没有空格?
解决方法
我已经意识到在iOS 7发布并且该平台上的NDA解除之后,我再也没有回来并回答了这个问题.从iOS SDK 7.0开始,可以使用NSAttributedString属性NSBaselineOffsetAttributeName,它完全符合我的需要.
它在iOS 6中可用,但“不再支持”.但是,在使用iOS 7 SDK构建时,它似乎做得对.
编辑:如果不清楚,我不建议这样做.如果Apple说不再支持它,那么依赖它可能不是一个好主意.它对我有用,但它绝对不是一个长期的解决方案.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。