UIView背景渐变与界面生成器视图

我想使用渐变作为UIView的背景。 我知道这通常是用图像和backgroundColor属性完成的。 但是,我想了解如何在代码中执行此操作。 使用https://stackoverflow.com/a/1931498/99683我可以编程创建一个UIView并给它一个渐变图层。 这很好。

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20, 340, 280, 100)];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor redColor] CGColor], (id)[[UIColor yellowColor] CGColor], nil];
[view.layer insertSublayer:gradient atIndex:0];
[self.view addSubview:view];

但是,如果我在界面生成器中放置一个视图(背景设置为清除)并尝试相同的操作,则梯度永远不会显示。

CAGradientLayer *gradient2 = [CAGradientLayer layer];
gradient2.frame = self.containerView.bounds;
gradient2.colors = [NSArray arrayWithObjects:(id)[[UIColor blueColor] CGColor], (id)[[UIColor greenColor] CGColor], nil];
[self.containerView.layer insertSublayer:gradient2 atIndex:0];

在IB或代码中还有其他事情需要我去做吗?


我遇到了同样的问题,但最终发现UIView并没有在代码中创建的位置,你试图设置背景渐变,我想你的情况可能是以下选项之一-viewDidLoad或-viewWillAppear因为这个

self.containerView.bounds将为{{0,0},{0,0}}

相反,你应该在里面设置渐变图层

viewDidAppear

在这一点上意见已经创建。


该库支持使用IB_DESIGNABLE / IBInspectable在Storyboard中设置渐变背景。

这非常有用。

https://github.com/recruit-mtl/EXTView/

链接地址: http://www.djcxy.com/p/69509.html

上一篇: UIView Background Gradient With Interface Builder View

下一篇: What does class << self mean?