Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 添加';单击';对UIButton的影响_Ios_Objective C_Uibutton_Effect - Fatal编程技术网

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几乎从来都不是正确的答案