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