ios - 在带有 subview 的 UIButton 上显示突出显示

标签 ios uiview uibutton calayer

我正在尝试创建一个具有以下特征的 UIbutton:
* 自定义图像作为其内容
* 圆角
* 一个投影

使用以下代码将格式化按钮以正确显示并起作用,但当触摸发生时,突出显示操作(即触摸时按钮变暗)会丢失。有任何想法吗?

+(void) styleButton:(UIButton*)button{
    UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(button.bounds.origin.x, button.bounds.origin.y, button.bounds.size.width, button.bounds.size.height)];    

    CALayer *sublayer = [CALayer layer];
    sublayer.shadowOffset = CGSizeMake(0, 3);
    sublayer.shadowRadius = 5.0;
    sublayer.shadowColor = [UIColor blackColor].CGColor;
    sublayer.shadowOpacity = 0.8;

    sublayer.frame = CGRectMake(button.bounds.origin.x, button.bounds.origin.y, button.bounds.size.width, button.bounds.size.height);

    backgroundView.userInteractionEnabled = NO;

    [backgroundView.layer addSublayer:sublayer];

    [button insertSubview:backgroundView atIndex:0];

    CALayer *imageLayer = [CALayer layer];
    imageLayer.frame = sublayer.bounds;
    imageLayer.cornerRadius = 10.0;
    imageLayer.contents = (id) [UIImage imageNamed:@"myImage.png"].CGImage;
    imageLayer.cornerRadius = 5.0f;
    imageLayer.masksToBounds = YES;
    [sublayer addSublayer:imageLayer];
}

最佳答案

您是否尝试过将 backgroundView 转换为 UIImage 并将其添加到按钮而不是将 backgroundView 添加为 subview ?当按下按钮时,这将保持变暗:

UIGraphicsBeginImageContext(backgroundView.frame.size);
[backgroundView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[button setImage:image forState:UIControlStateNormal];

关于ios - 在带有 subview 的 UIButton 上显示突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7898799/

相关文章:

objective-c - 是否可以在核心数据中使用自定义 sqlite 函数?

ios - 如何在 NSLog 中打印 NSRange

ios - UIscrollview 不快速滚动

ios - 如何在 iOS Swift 中向多个 ViewController 添加一个公共(public) View ?

ios - Swift - 当点击键盘上的 "done"时点击按钮

ios - 某些字体不适用于 XCode 中的 UIButton

ios - 如何更改 Mapbox 中目的地以外位置的标记?

ios - UIView 的圆顶角并添加边框

ios - UIButton 没有响应我对 collectionView 单元格的触摸?

ios - 自动居中以编程方式创建的 UIButtons