Xamarin - 渐变背景

Nul*_*sis 5 xamarin.ios xamarin

我正在尝试以编程方式在 Xamarin iOS 中设置这样的背景渐变:

CGColor[] colors = new CGColor[] { new UIColor(red: 0.05f, green:0.44f, blue:0.73f, alpha:1.0f).CGColor,
                new UIColor(red: 45/255, green: 128 / 255, blue: 153 / 255, alpha: 0.01f ).CGColor};
            CAGradientLayer gradientLayer = new CAGradientLayer();
            gradientLayer.Frame = this.View.Bounds;
            gradientLayer.Colors = colors;
            this.View.Layer.AddSublayer(gradientLayer);
Run Code Online (Sandbox Code Playgroud)

它有效,但我在屏幕上有表单元素(标签、按钮等),这导致所有元素都显得褪色,就好像图层直接出现在顶部一样元素顶部一样。我认为这就是代码正在做的事情 - 它渲染整个页面,然后在屏幕顶部添加不透明的图层(我希望它位于屏幕后面)。

相反,我想要的是将背景设置为渐变,但我添加的任何元素都不会褪色并尝试匹配背景颜色。

我尝试在标准视图之上添加一个视图,并将 alpha 设置为 1,将背景设置为白色,但这似乎没有帮助(这表明我的理论是,以编程方式在渲染后的所有内容之上添加一个图层)。

我究竟做错了什么?谢谢!

Sus*_*ver 1

分配给根的渐变层View显示ViewController在所有其他视图的“后面”。

默认情况下,视图(UILabel、UIButton 等)没有设置背景颜色,因此将与该背景图层混合,如果这不是您正在寻找的效果,则为它们指定背景:

在此输入图像描述

var button = new UIButton(UIButtonType.System);
button.Frame = new CGRect(40, 300, 120, 40);
button.SetTitle("No Background", UIControlState.Normal);
button.TintColor = UIColor.Red;
View.AddSubview(button);

var button2 = new UIButton(UIButtonType.System);
button2.Frame = new CGRect(180, 300, 100, 40);
button2.SetTitle("Background", UIControlState.Normal);
button2.TintColor = UIColor.Red;
button2.BackgroundColor = UIColor.White;
View.AddSubview(button2);
Run Code Online (Sandbox Code Playgroud)