我正在尝试以编程方式在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);
它可以工作,但我在屏幕上有表格元素(标签,按钮等),这导致所有这些元素显得褪色,好像图层直接出现在的顶部元素。我认为这就是代码正在做的事情 - 它渲染整个页面,然后在屏幕顶部添加具有不透明度的图层(我希望它背后)。
我想要的是将背景设置为渐变,但我添加的任何元素都不会褪色并尝试匹配背景颜色。
我尝试在标准视图的顶部添加一个视图,并将alpha设置为1,将背景设置为白色,但这似乎没有帮助(这表明我的理论是以编程方式在它之后的所有内容上添加一层呈现)。
我做错了什么? 谢谢!
答案 0 :(得分:3)
我知道我为演出迟到了,但为了将来参考,我使用:
this.View.Layer.InsertSublayer(gradientLayer, 0);
0
代表索引。
答案 1 :(得分: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);