繁体   English   中英

带有渐变图层的UIButton不突出显示

[英]UIButton with a gradient layer not highlighting

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

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

您的按钮没有图像-因此没有要突出显示的内容。

设置一个图像(如果需要,可以使用渐变图像)作为按钮的背景...即使不为UIControlStateHighlighted设置图像,该按钮也将“突出显示”-基本上,iOS会反转颜色。

另外,如果只需要水平/垂直渐变,则可能需要使用以下功能: resizableImageWithCapInsets

玩得开心 !

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

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

[testButton setImage:normalStateImage forState:UIControlStateNormal];
[testButton setImage:highlightStateImage forState:UIControlStateHighlighted];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM