在我的应用程序中,我在某些条件下在细胞上添加渐变层。在iOS的早期版本中,它工作得很好,但是在更新到14.1之后,它就不再显示渐变了。下面是用于显示渐变者的代码。
Layer.InsertSublayer(Utility.GetGradientLayer(Frame, GradientColor.Green), 0);我已经在iOS 11模拟器上测试过它,这段代码运行良好,但是对于iOS 14,它没有显示在单元格上。当我将索引从0更改为1时(如下所示),
Layer.InsertSublayer(Utility.GetGradientLayer(Frame, GradientColor.Green), 1);渐变器在iOS 14设备上显示,但是在iOS-11设备上,渐变层从文本中显示出来,单元格的文本返回到这个渐变层而不显示(请注意该层是CALayer的对象)。在这方面的任何帮助都将受到高度赞赏。谢谢
发布于 2020-11-12 02:33:50
根据描述,您可以首先使用以下方法来解决是否属于iOS 14设备:
if (UIDevice.CurrentDevice.CheckSystemVersion(14, 0))
{
Layer.InsertSublayer(Utility.GetGradientLayer(Frame, GradientColor.Green), 1);
}
else
{
Layer.InsertSublayer(Utility.GetGradientLayer(Frame, GradientColor.Green), 0);
}关于原因,我猜在iOS 14设备中应该有多个子层,因此嵌入在0上不能显示。
您还可以尝试使用以下方法来检查是否可以工作:
if(Layer.Sublayers.Length > 1)
{
Layer.InsertSublayer(Utility.GetGradientLayer(Frame, GradientColor.Green), 1);
// or try this
Layer.InsertSublayerAbove(Utility.GetGradientLayer(Frame, GradientColor.Green), Layer.Sublayers[0]);
}
else
{
Layer.InsertSublayer(Utility.GetGradientLayer(Frame, GradientColor.Green), 0);
}发布于 2020-11-12 13:49:51
小江发了一个很好的解决方案,但我发现了另一个相当简单的黑客。我们只需要使单元格的背景透明,而不是更改代码。因此,如果梯度是任意数量的层,它将直接显示。没有必要强制执行任何与操作系统相关或与层相关的检查。如果其他人找到了更好的解决方案,请告诉我们。问候
https://stackoverflow.com/questions/64793829
复制相似问题