Ios 添加';单击';对UIButton的影响
我有一个Ios 添加';单击';对UIButton的影响,ios,objective-c,uibutton,effect,Ios,Objective C,Uibutton,Effect,我有一个ui按钮,当我点击它时,它会下降,产生点击/点击的效果 我的问题是,我必须在UIButton周围添加一个黑色边框,但添加此边框会保持边框静止,并且不会随着UIButton向下移动,让我对UIButton产生点击效果的代码如下: - (void)drawRect:(CGRect)rect { [super drawRect:rect]; CGSize size = self.bounds.size; CGContextRef context = UIGraphi
ui按钮
,当我点击它时,它会下降,产生点击/点击
的效果
我的问题是,我必须在UIButton
周围添加一个黑色边框,但添加此边框会保持边框静止,并且不会随着UIButton
向下移动,让我对UIButton
产生点击效果的代码如下:
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
CGSize size = self.bounds.size;
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect faceRect = CGRectMake(0, 0, size.width, size.height);
UIGraphicsBeginImageContextWithOptions(faceRect.size, NO, 0.0);
[[self faceColorForState:self.state] set];
[self drawRoundedRect:faceRect radius:self.radius context:UIGraphicsGetCurrentContext()];
UIImage *faceImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[[self sideColorForState:self.state] set];
CGRect sideRect = CGRectMake(0, size.height * 1.0 / 4.0, size.width, size.height * 3.0 / 4.0);
[self drawRoundedRect:sideRect radius:self.radius context:context];
CGRect faceShrinkedRect;
if(self.state == UIControlStateSelected || self.state == UIControlStateHighlighted) {
faceShrinkedRect = CGRectMake(0, self.depth, size.width, size.height - self.margin);
} else {
faceShrinkedRect = CGRectMake(0, 0, size.width, size.height - self.margin);
}
[faceImage drawInRect:faceShrinkedRect];
}
使用drawRect:
会使事情过于复杂。最简单的方法是为按钮的背景创建两个图像,一个带有黑色边框。然后使用:
[myButton setBackgroundImage:[UIImage imageNamed:<up-image>] forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:<down-image>] forState:UIControlStateHighlighted];
使用drawRect:
会使事情过于复杂。最简单的方法是为按钮的背景创建两个图像,一个带有黑色边框。然后使用:
[myButton setBackgroundImage:[UIImage imageNamed:<up-image>] forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:<down-image>] forState:UIControlStateHighlighted];
我建议使用canvaspod.io/它非常简单。为什么要在按钮上放置一个转换形状而不是自定义图形?因为如果我应用转换,应用在图层上的边框仍然不会移动。。。你能给我一个CGLayer的例子吗?如果你翻译整个视图,边框也应该移动。也许你可以在你的文章和你想要的图层层次结构中添加一个图像?不像你自己画的那么花哨,但是为什么不使用两个png文件作为按钮背景呢,一个用于正常状态,另一个用于活动/点击?我建议使用canvaspod.io/它非常简单。为什么要在按钮上放置一个平移变换,而不是自定义绘图?因为如果我应用平移变换,应用在图层上的边框仍然不会移动。。。你能给我一个CGLayer的例子吗?如果你翻译整个视图,边框也应该移动。也许你可以在你的帖子和你想要的图层层次结构中添加一个图像?不像你自己画的那么花哨,但为什么不使用两个png文件作为按钮背景,一个用于正常状态,一个用于活动/点击?我更喜欢不使用两个png,因为我应该使用不同颜色的按钮,所以这个方法可以让我使用很多png文件。你可以用你想要的任何颜色在代码中创建UIImages,然后将它们分配到各个州。覆盖drawRect几乎从来都不是正确的答案。我宁愿不要使用两个png,因为我应该使用不同颜色的按钮,所以这种方法将允许我使用大量png文件。您可以在代码中创建任意颜色的UIImages,然后将它们分配给州。覆盖drawRect几乎从来都不是正确的答案