我想使用渐变作为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];
但是,如果我在Interface Builder中放置一个视图(背景设置为clear)并尝试相同的操作,渐变永远不会出现。
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或代码中做些什么才能使其发挥作用吗?
答案 0 :(得分:3)
我遇到了同样的问题,但最后发现UIView还没有在你尝试设置背景渐变的代码中创建,我想在你的情况下可能是以下之一 - < em> viewDidLoad 或 - viewWillAppear 因为
self.containerView.bounds将是{{0,0},{0,0}}
相反,您应该在
中设置渐变图层viewDidAppear
此时已创建视图。
答案 1 :(得分:1)
此库支持使用IB_DESIGNABLE / IBInspectable在Storyboard中设置渐变背景。
这非常有用。