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 及更低版本上消失的主要内容,如果未能解决你的问题,请参考以下文章

如何在iPhone中为UILabel的背景设置渐变色

在情节提要中更改 iphone 4 和 iphone 5 之间的背景图像?

完整的背景图像在 iPhone 5 上的放大效果不佳

ios:如何在背景图像上添加 uiLabel?

ios7及更高版本导致图像图标错误

希望我的应用程序只能在 iPhone 4 及更高版本上运行,而不能在其他设备上运行