创建了一个带渐变图层的按钮:
//MyGradient creates and returns gradient layers
CAGradientLayer *gradient = [MyGradient blueGradient];
//MyButton is a subclassed UIButton which adds some attributes
MyButton *testButton = [MyButton buttonWithType:UIButtonTypeCustom];
testButton.frame = CGRectMake(10, 10, 150, 50);
[testButton addTarget:self action:@selector(testButton:) forControlEvents:UIControlEventTouchUpInside];
[gradient setFrame:testButton.bounds];
testButton.clipsToBounds = YES;
[testButton.layer insertSublayer:gradient atIndex:0];
[self.view addSubview:testButton];
如何在按下时让图像突出显示?我发现了几个示例代码,它们是UIButton的子类并覆盖了drawRect:方法。是否有更简单的方法让按钮突出显示?
答案 0 :(得分:1)
您的按钮没有图像 - 因此无需突出显示。
将图像(渐变图像,如果需要)设置为按钮的背景......即使您没有为UIControlStateHighlighted设置图像,按钮也会“突出显示” - 基本上,iOS将反转颜色。 / p>
此外,如果您只需要水平/仅垂直渐变,则可能需要将此功能取消:resizableImageWithCapInsets
玩得开心!
答案 1 :(得分:0)
没有内置的方法可以做到这一点。要么重载UIButton并根据按钮的状态在drawRect
中自己绘制渐变,要么为这两个状态创建2个渐变图像,并使用setBackgroundImage:image forState:UIControlStateNormal
/ UIControlStateHighlighted
。
答案 2 :(得分:0)
最简单的方法是将渐变放在图像文件中(最好可调整大小)并使用以下代码:
[testButton setImage:normalStateImage forState:UIControlStateNormal];
[testButton setImage:highlightStateImage forState:UIControlStateHighlighted];