UILabel 圆角在 iOS 7.1 中变得清晰
Posted
技术标签:
【中文标题】UILabel 圆角在 iOS 7.1 中变得清晰【英文标题】:UILabel rounded corners turn out sharp in iOS 7.1 【发布时间】:2014-04-04 06:25:05 【问题描述】:自从更新到 ios7.1 后,我的应用中的 UILabel 的外观发生了变化。 在操作系统更新之前,我所有的 UILabel 都按照我的意图进行了圆角处理。在 iOS7.1 中,它们现在都有尖角了。
我在下面插入我使用的代码。任何有关如何将 UILabel 恢复为我的原始外观的帮助将不胜感激。
视图控制器的实现文件顶部:
#import <QuartzCore/QuartzCore.h>
创建 UILabel 的代码。我已经用评论标记了(我认为的)相关行。
CGRect labelRect = CGRectMake(20, 20, 200, 100);
NSString *theText = [self info];
CGSize size = [theText sizeWithFont:[UIFont systemFontOfSize:15] constrainedToSize:CGSizeMake(labelRect.size.width, 10000) lineBreakMode:NSLineBreakByWordWrapping];
UILabel *theLabel = [[UILabel alloc] initWithFrame:labelRect];
[theLabel setNumberOfLines:0];
[theLabel setText:theText];
[[theLabel layer] setCornerRadius:15]; // THIS IS THE RELEVANT LINE
// For iOS7
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
[theLabel setBackgroundColor:[UIColor whiteColor]];
[[self view] addSubview:theLabel];
【问题讨论】:
尝试将标签的属性clipsToBounds
设置为YES
【参考方案1】:
设置theLabel.clipsToBounds = YES
,或theLabel.layer.masksToBounds = YES
。任何一个都可以。
【讨论】:
只尝试了[[theLabel layer] setMasksToBounds:YES]
,但效果和我的一样。【参考方案2】:
使用这个
CGRect labelRect = CGRectMake(20, 20, 200, 100);
NSString *theText = [self info];
CGSize size = [theText sizeWithFont:[UIFont systemFontOfSize:15] constrainedToSize:CGSizeMake(labelRect.size.width, 10000) lineBreakMode:NSLineBreakByWordWrapping];
UILabel *theLabel = [[UILabel alloc] initWithFrame:labelRect];
[theLabel setNumberOfLines:0];
[theLabel setText:theText];
[[theLabel layer] setCornerRadius:15]; // THIS IS THE RELEVANT LINE
[theLabel.layer setMasksToBounds:YES]; ///missing in your code
// For iOS7
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
[theLabel setBackgroundColor:[UIColor whiteColor]];
[[self view] addSubview:theLabel];
【讨论】:
以上是关于UILabel 圆角在 iOS 7.1 中变得清晰的主要内容,如果未能解决你的问题,请参考以下文章
UIlabel layer.cornerRadius 在 iOS 7.1 中不起作用