微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin.iOS:Layer.InsertSublayer无法在iOS 14.1中正常工作

如何解决Xamarin.iOS:Layer.InsertSublayer无法在iOS 14.1中正常工作

在我的应用程序中,我会在某些情况下在单元格上添加渐变层。在以前的iOS版本中,它工作正常,但是在更新到14.1之后,它不再显示渐变。 以下是用于显示渐变的代码

Layer.InsertSublayer(Utility.GetGradientLayer(Frame,GradientColor.Green),0);

我已经在iOS 11模拟器上对其进行了测试,并且此代码可以正常工作,但是对于iOS 14,它未显示在单元格上。当我将索引从0更改为1(如下所示)时,

Layer.InsertSublayer(Utility.GetGradientLayer(Frame,1);

渐变显示在iOS 14设备上,但在iOS-11设备上,渐变层显示在文本的from中,并且单元格的文本返回到此渐变层且未显示(请注意,图层是CALayer的对象)。 在这方面的任何帮助将不胜感激。谢谢

解决方法

Junior Jiang发布了一个很好的解决方案,但我发现了另一个非常简单的技巧。无需更改代码,我们只需要使单元格的背景透明即可。因此,如果gradiant是任意数量的图层,它将直接显示出来。无需进行任何与操作系统相关或与图层相关的检查。 如果还有其他人找到更好的解决方案,请告诉我们。问候

,

从描述中,您可以使用以下方法首先确定是否属于iOS 14设备:

if (UIDevice.CurrentDevice.CheckSystemVersion(14,0))
{
    Layer.InsertSublayer(Utility.GetGradientLayer(Frame,GradientColor.Green),1);
}
else
{
    Layer.InsertSublayer(Utility.GetGradientLayer(Frame,0);
}

关于原因,我想在iOS 14设备中应该有多个子层,因此无法显示0的插图。

您还可以尝试以下方法来检查是否可以工作:

if(Layer.Sublayers.Length > 1)
{
    Layer.InsertSublayer(Utility.GetGradientLayer(Frame,1);
    // or try this
    Layer.InsertSublayerAbove(Utility.GetGradientLayer(Frame,Layer.Sublayers[0]);
}
else
{
    Layer.InsertSublayer(Utility.GetGradientLayer(Frame,0);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。