首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在UIButton中添加阴影?

如何在UIButton中添加阴影?
EN

Stack Overflow用户
提问于 2010-02-23 08:34:43
回答 5查看 89.5K关注 0票数 77

我想给UIButton添加一个阴影。我尝试使用self.layer.shadow*属性。这些属性在UIView中有效,但在UIButton中的行为有所不同。如果我能得到任何指示来绘制投影,我将非常感激。谢谢!

代码语言:javascript
复制
self.layer.cornerRadius = 8.0f;
self.layer.masksToBounds = YES;
self.layer.borderWidth = 1.0f;

self.layer.shadowColor = [UIColor greenColor].CGColor;
self.layer.shadowOpacity = 0.8;
self.layer.shadowRadius = 12;
self.layer.shadowOffset = CGSizeMake(12.0f, 12.0f);
EN

回答 5

Stack Overflow用户

发布于 2011-06-15 04:47:20

在这个问题中只有一个小错误导致阴影无法显示:masksToBounds:YES也屏蔽了阴影!下面是正确的代码:

代码语言:javascript
复制
self.layer.cornerRadius = 8.0f;
self.layer.masksToBounds = NO;
self.layer.borderWidth = 1.0f;

self.layer.shadowColor = [UIColor greenColor].CGColor;
self.layer.shadowOpacity = 0.8;
self.layer.shadowRadius = 12;
self.layer.shadowOffset = CGSizeMake(12.0f, 12.0f);

不幸的是,这意味着我们不能在没有技巧的情况下同时屏蔽内容和阴影。

记住要使用#import <QuartzCore/QuartzCore.h>

票数 101
EN

Stack Overflow用户

发布于 2013-04-23 10:15:19

如果您正在使用UIButton,这里有一个简单的解决方案

代码语言:javascript
复制
#import <QuartzCore/QuartzCore.h>

button.imageView.layer.cornerRadius = 7.0f;
button.layer.shadowRadius = 3.0f;
button.layer.shadowColor = [UIColor blackColor].CGColor;
button.layer.shadowOffset = CGSizeMake(0.0f, 1.0f);
button.layer.shadowOpacity = 0.5f;
button.layer.masksToBounds = NO;

只是让它工作,并认为它值得张贴。希望这能有所帮助!

票数 62
EN

Stack Overflow用户

发布于 2011-07-07 06:18:09

这是一个子类,它不仅创建了投影,而且当你按下按钮时,它会向下动画。

代码语言:javascript
复制
//
//  ShadowButton.h

#import <Foundation/Foundation.h>

@interface ShadowButton : UIButton {
}

@end

//
//  ShadowButton.m

#import "ShadowButton.h"
#import <QuartzCore/QuartzCore.h>

@implementation ShadowButton

-(void)setupView{

    self.layer.shadowColor = [UIColor blackColor].CGColor;
    self.layer.shadowOpacity = 0.5;
    self.layer.shadowRadius = 1;
    self.layer.shadowOffset = CGSizeMake(2.0f, 2.0f);

}

-(id)initWithFrame:(CGRect)frame{
    if((self = [super initWithFrame:frame])){
        [self setupView];
    }

    return self;
}

-(id)initWithCoder:(NSCoder *)aDecoder{
    if((self = [super initWithCoder:aDecoder])){
        [self setupView];
    }

    return self;
}

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    self.contentEdgeInsets = UIEdgeInsetsMake(1.0,1.0,-1.0,-1.0);
    self.layer.shadowOffset = CGSizeMake(1.0f, 1.0f);
    self.layer.shadowOpacity = 0.8;

    [super touchesBegan:touches withEvent:event];

}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    self.contentEdgeInsets = UIEdgeInsetsMake(0.0,0.0,0.0,0.0);
    self.layer.shadowOffset = CGSizeMake(2.0f, 2.0f);
    self.layer.shadowOpacity = 0.5;

    [super touchesEnded:touches withEvent:event];

}

@end
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2315366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档