UIButton与GradientLayer模糊图像和加深渐变
问题描述:
我有一个UIButton在这里,我想有一个渐变作为背景下面的图像(符号与透明背景),但我面临两个不同的问题。UIButton与GradientLayer模糊图像和加深渐变
CAGradientLayer的第一层似乎覆盖在图像的顶部,无论我如何添加它,完全模糊了图像。
其次梯度本身似乎变得很暗,像按钮被禁用,它不是。
这里是我的代码:
self.backButton = [[UIButton alloc] initWithFrame:CGRectMake(15, 35, 28, 28)];
[backButton addTarget:self
action:@selector(goBack)
forControlEvents:UIControlEventTouchUpInside];
[backButton setBackgroundColor:[UIColor clearColor]];
CAGradientLayer *buttonGradient = [CAGradientLayer layer];
buttonGradient.frame = backButton.bounds;
buttonGradient.colors = [NSArray arrayWithObjects:
(id)[[UIColor colorWithRed:.0
green:.166
blue:.255
alpha:1] CGColor],
(id)[[UIColor colorWithRed:.0
green:.113
blue:.255
alpha:1] CGColor],
nil];
[buttonGradient setCornerRadius:backButton.frame.size.width/2];
[backButton.layer insertSublayer:buttonGradient
atIndex:0];
[backButton setImage:[UIImage imageNamed:@"backarrow.png"]
forState:UIControlStateNormal];
[backButton setEnabled:NO];
[topbarView addSubview:backButton];
答
所以我设法做[按钮bringSubviewToFront:button.imageView]来解决这个问题加入梯度之后。看起来无论我做什么新图层都会添加到imageView的顶部,所以我需要将它推到前面。
答
或者,可以插入图像视图的层之下的梯度层
CAGradientLayer* gradient = [CAGradientLayer layer];
// ...
[button.layer insertSublayer:gradient below:button.imageView.layer];
+0
你字面上刚刚救了我的命! ;)在添加渐变图层后,图像未显示,因为图层当然是 - 在图像图层上方。谢谢 – virusss8
答
SWIFT 3
这里去的例子:(在尼尔答案基于)
let layer = CAGradientLayer()
layer.frame = CGRect(x: 0, y: 0, width: myButtonOutlet.layer.frame.size.width, height: myButtonOutlet..layer.frame.size.height)
layer.colors = [UIColor.white.cgColor, pixelColorReceta.cgColor]
layer.masksToBounds = true
layer.cornerRadius = myButtonOutlet.layer.cornerRadius
myButtonOutlet.layer.insertSublayer(layer, below: myButtonOutlet..imageView?.layer)
快乐编码:)
答
夫特3
可以移动图像的梯度以上:
contactButton.imageView?.layer.zPosition = 1
或图像下插入梯度:
button.layer.insertSublayer(gradientLayer, below: button.imageView?.layer)
尼斯溶液,感谢 –
完美,感谢 – avdyushin