首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin.iOS:Layer.InsertSublayer没有像以前那样在iOS 14.1中工作

Xamarin.iOS:Layer.InsertSublayer没有像以前那样在iOS 14.1中工作
EN

Stack Overflow用户
提问于 2020-11-11 20:42:00
回答 2查看 138关注 0票数 0

在我的应用程序中,我在某些条件下在细胞上添加渐变层。在iOS的早期版本中,它工作得很好,但是在更新到14.1之后,它就不再显示渐变了。下面是用于显示渐变者的代码。

代码语言:javascript
复制
Layer.InsertSublayer(Utility.GetGradientLayer(Frame, GradientColor.Green), 0);

我已经在iOS 11模拟器上测试过它,这段代码运行良好,但是对于iOS 14,它没有显示在单元格上。当我将索引从0更改为1时(如下所示),

代码语言:javascript
复制
Layer.InsertSublayer(Utility.GetGradientLayer(Frame, GradientColor.Green), 1);

渐变器在iOS 14设备上显示,但是在iOS-11设备上,渐变层从文本中显示出来,单元格的文本返回到这个渐变层而不显示(请注意该层是CALayer的对象)。在这方面的任何帮助都将受到高度赞赏。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-12 02:33:50

根据描述,您可以首先使用以下方法来解决是否属于iOS 14设备:

代码语言:javascript
复制
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上不能显示。

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

代码语言:javascript
复制
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);
}
票数 0
EN

Stack Overflow用户

发布于 2020-11-12 13:49:51

小江发了一个很好的解决方案,但我发现了另一个相当简单的黑客。我们只需要使单元格的背景透明,而不是更改代码。因此,如果梯度是任意数量的层,它将直接显示。没有必要强制执行任何与操作系统相关或与层相关的检查。如果其他人找到了更好的解决方案,请告诉我们。问候

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64793829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档