1

创建了一个带有渐变层的按钮:

//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: 方法。有没有更简单的方法让按钮突出显示?

4

3 回答 3

1

您的按钮没有图像 - 所以没有什么可以突出显示的。

将图像(如果需要,渐变图像)设置为按钮的背景......即使您没有为 UIControlStateHighlighted 设置图像,按钮也会“突出显示” - 基本上,iOS 会反转颜色。

此外,如果您只需要水平/仅垂直渐变,您可能需要检查此功能:resizableImageWithCapInsets

玩得开心 !

于 2012-05-21T16:26:19.073 回答
0

没有内置的方法可以做到这一点。要么重载 UIButton 并drawRect根据按钮的状态自己绘制渐变,要么为两种状态创建 2 个渐变图像并使用setBackgroundImage:image forState:UIControlStateNormal/ UIControlStateHighlighted

于 2012-05-21T16:05:58.177 回答
0

最简单的做法是将渐变放入图像文件(最好可调整大小)并使用以下代码:

[testButton setImage:normalStateImage forState:UIControlStateNormal];
[testButton setImage:highlightStateImage forState:UIControlStateHighlighted];
于 2012-05-21T16:07:47.523 回答