gpt4 book ai didi

ios - 在 iOS 7.0.3 中使用 boundingRectWithSize 的 UILabel 渲染问题

转载 作者:可可西里 更新时间:2023-11-01 05:44:22 25 4
gpt4 key购买 nike

我试图调整 UILabel 的大小以适应 NSString 的边界,但我在 iOS 7.0.3 和 iOS 7.1.1 中看到不同的结果。如下所示,iOS 7.0.3 似乎无法正确绘制文本。

示例 1:文本被绘制到标签的底部,几乎在边界之外:

enter image description here

示例 2:文本绘制在 1 行(而不是 2 行)上,没有发生换行,只有尾部截断。

enter image description here

这是我为上面列出的两个 iOS 版本使用的代码。

CGSize boundingSize = CGSizeMake(214, 9999);
CGRect boundingRect = CGRectZero;
[self.nameLabel setNumberOfLines:2];

// for iOS7
if([self.place.placeName respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]){
NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[paragraphStyle setLineBreakMode:NSLineBreakByWordWrapping];

boundingRect = [self.place.placeName boundingRectWithSize:boundingSize
options:NSStringDrawingUsesLineFragmentOrigin
attributes:[NSDictionary dictionaryWithObjectsAndKeys:
self.nameLabel.font, NSFontAttributeName,
paragraphStyle, NSParagraphStyleAttributeName, nil]
context:nil];

}else{
// pre iOS7
CGSize size = [self.place.placeName sizeWithFont:self.nameLabel.font constrainedToSize:boundingSize lineBreakMode:NSLineBreakByWordWrapping];
boundingRect = CGRectMake(0, 0, size.width, size.height);
}

[self.nameLabel setFrame:CGRectMake(CGRectGetMaxX(self.photoImageView.frame)+15,
CGRectGetMinY(self.photoImageView.frame),
boundingRect.size.width, boundingRect.size.height)];

[self.nameLabel setText:[place placeName]];

有什么想法吗?提前致谢。

最佳答案

我已就此问题联系 Apple,他们已确认这是 iOS 7.0.3 的错误,已在 iOS 7.1.1 中修复。

The workaround for the issue (I used to use) is to create your own UILabel subclass, override the - (void)drawTextInRect: method, and use NSString’s - (void)drawInRect:withAttributes: to render the string. (Apple Developer)

关于ios - 在 iOS 7.0.3 中使用 boundingRectWithSize 的 UILabel 渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23559454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com