【发布时间】:2013-03-08 06:42:48
【问题描述】:
我正在为 UIButton 创建一个自定义类别类,但它没有阴影功能。那么当单击该按钮时,我应该如何在该按钮上添加阴影。
【问题讨论】:
-
你的意思是用户点击时的效果还是阴影应该是永久的?
-
是的,我的意思是用户点击该按钮时的效果。
我正在为 UIButton 创建一个自定义类别类,但它没有阴影功能。那么当单击该按钮时,我应该如何在该按钮上添加阴影。
【问题讨论】:
如果您需要在按钮上突出显示,而不仅仅是添加:
button.highlighted= YES;
如果您想要悬停类型效果的阴影,而不仅仅是向您的按钮添加另一个图像并将其 controlstatenormal 设置为 hightlighted,即:
//for normal tap
[button setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
//for hovering effect
[button setBackgroundImage:[UIImage imageNamed:@"hover.png"] forState:UIControlStateHighlighted];
【讨论】:
每个按钮都有几个状态:
enum {
UIControlStateNormal = 0,
UIControlStateHighlighted = 1 << 0,
UIControlStateDisabled = 1 << 1,
UIControlStateSelected = 1 << 2,
UIControlStateApplication = 0x00FF0000,
UIControlStateReserved = 0xFF000000
};
您可以为每个状态设置不同的图像:
- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state
如果只想设置标题阴影,可以使用:
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state
顺便说一句
如果您使用的是 IB,您可以在界面中设置状态图像。
【讨论】: