UILabel 背景图像在 iPhone 5 及更低版本上消失
Posted
技术标签:
【中文标题】UILabel 背景图像在 iPhone 5 及更低版本上消失【英文标题】:UILabel Background Image Disappears on iPhone 5 and below 【发布时间】:2016-03-13 19:05:07 【问题描述】:我正在构建一个日历应用程序并有一系列显示日期的 UILabel。对于任何有事件的日期,我通过使用以下代码更改标签背景图像在日期下方放置一个小点:
label.backgroundColor = [UIColor colorWithPatternImage:newImage];
这在 iPhone 5s 及更高版本上运行良好,但图像不会在 iPhone 5 或任何更早的 iPhone 上显示。
这可能是我在 Images.xcassets 中的图像大小有问题吗?
我目前有 40x40 的 1x、80x80 的 2x、3x 和 120x120。
【问题讨论】:
iPhone 5、5c 和 5s 都具有相同的分辨率。 我建议你应该使用 NSMutableAttributedString。制作一个更大的高度 UILabel,在顶部放置日期编号,在底部放置点,这样您就不必使用背景图像。背景图片可能质量不佳。 【参考方案1】:您不能将背景图像添加到 UILabel,但您可以将 UIImageView 作为子视图添加到 UILabel。
UIImageView *labelBackground = [[UIImageView alloc]
initWithImage:[UIImage imageNamed:@"mybg.png"]];
[myLabel addSubview:labelBackground];
【讨论】:
图像看起来好多了(不像我使用 colorWithPatternImage 时那样模糊),但它们仍然没有出现在 iPhone 5 或 4s 上。 尝试使用框架 UIImageView * image = [UIImageView alloc]initWithFrame:CGRectMake(, , , )]; 还没有。我能够使用 CGRectMake 在 UILable 中将点居中,但它仍然不会出现在较小的手机上。 看起来这是一个不同的问题,而不仅仅是图像不显示。在 iPhone 4s 和 5 上,当点击带有事件的日期时,特定日期的事件也不会显示在我放置在日历下方的表格视图中。无论哪种方式,您的回答都非常有帮助,并且图像现在显示得更好。谢谢。 想通了@a4arpan - 很奇怪很奇怪。我会把它作为我问题的答案发布,这样格式就不仅仅是一个文本块。【参考方案2】:我发现它与图像大小无关。在按照@a4arpan 的建议从使用 colorWithPatternImage 更改为添加子视图后,我注意到日期的事件信息(日期、时间等)也没有显示在 iPhone 4s 和 5 的日历下方的表格视图中。
为了确定我是否应该为有事件的日期显示点,我正在检查 if 语句,即:
if ([label.text == dateOfEvent]...)
我错过了这些是字符串的事实,它应该读作:
if ([label.text isEqualToString: dateOfEvent]
一旦我做出改变,它就开始通过模拟器在所有可用的 iPhone 上运行。很奇怪,在 iPhone 5s、6 等模拟器上从来不是问题,但在 4s 和 5 上却成了问题。
【讨论】:
以上是关于UILabel 背景图像在 iPhone 5 及更低版本上消失的主要内容,如果未能解决你的问题,请参考以下文章