[英]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.