在UIButton上添加"点击"效果

ale*_*ffi 1 objective-c effect uibutton ios

我有一个UIButton,当我点击它,下降给一个效果click/tap.

例

我的问题是,我必须添加一个black border围绕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];
}
Run Code Online (Sandbox Code Playgroud)

Ash*_*lls 5

你使用过于复杂的事情drawRect:.最简单的方法是为按钮背景创建2个图像,其中一个图像带有黑色边框.然后使用:

[myButton setBackgroundImage:[UIImage imageNamed:<up-image>] forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:<down-image>] forState:UIControlStateHighlighted];
Run Code Online (Sandbox Code Playgroud)

如有必要,您可以重复使用代码在代码中创建图像.也许是一种类别方法UIImage:

+(UIImage *)buttonBackgroundImageWithColor:(UIColor *) color highlighted: (BOOL) highlighted
Run Code Online (Sandbox Code Playgroud)