我有一个UIButton,非常类似于标准的iOS键盘字母按钮.

我不知道如何像iOS那样只为底层创建阴影.

在此处输入图像描述

我使用下面的代码,但我看到四周都有阴影,而不仅仅是底部:

CALayer *buttonLayer = [[CALayer alloc] init];
buttonLayer.shadowColor = [UIColor grayColor].CGColor;
buttonLayer.shadowOffset = CGSizeMake(0.f,1.f);
buttonLayer.masksToBounds = NO;
buttonLayer.shadowOpacity = 1.f;

你能告诉我如何达到同样的效果吗.提前谢谢.

推荐答案

可以混合使用拐角半径和阴影属性.我在iOS 8上测试了它.

Objective-C:

[self.globeButton setImage:[UIImage imageNamed:@"Globe"] forState:UIControlStateNormal];
self.globeButton.backgroundColor = [UIColor colorWithRed:171 green:178 blue:186 alpha:1.0f];
// Shadow and Radius
self.globeButton.layer.shadowColor = [[UIColor colorWithRed:0 green:0 blue:0 alpha:0.25f] CGColor];
self.globeButton.layer.shadowOffset = CGSizeMake(0, 2.0f);
self.globeButton.layer.shadowOpacity = 1.0f;
self.globeButton.layer.shadowRadius = 0.0f;
self.globeButton.layer.masksToBounds = NO;
self.globeButton.layer.cornerRadius = 4.0f;

Swift:

globeButton.setImage(UIImage(named: "Globe"), for: .normal)
globeButton.backgroundColor = UIColor(red: 171/255, green: 178/255, blue: 186/255, alpha: 1.0)
// Shadow Color and Radius
globeButton.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.25).cgColor
globeButton.layer.shadowOffset = CGSize(width: 0.0, height: 2.0)
globeButton.layer.shadowOpacity = 1.0
globeButton.layer.shadowRadius = 0.0
globeButton.layer.masksToBounds = false
globeButton.layer.cornerRadius = 4.0

Result:

UIButton + iOS Keyboard style

Objective-c相关问答推荐

如何在 NSImage CIFilter ObjC 周围创建边框

如何限制 UITextField 中的特殊字符(点和下划线除外)?

NSString "nil or empty" 判断 - 这完成了吗?

iOS中的非延迟图像加载

如何通过仅更改高度而不更改宽度来调整 UILabel 的大小?

如何复制 .xib 文件?

在objective-c中isa是什么意思?

更改 UIDatePicker 字体 colored颜色 ?

仅替换 NSString 中子字符串的第一个实例

何时使用静态字符串与 #define

如何调整 UIModalPresentationFormSheet 的大小?

在 iOS 7 中检测后台应用刷新的用户设置

如何切换回已经加载的 UIViewController?

以流畅的动画显示/隐藏导航栏

从 UIImage 获取 Exif 数据 - UIImagePickerController

如何在 iOS 7 启动期间更改状态栏样式

从 NSString 中删除换行符

info.plist 中的Application Requires iPhone Environment键是什么意思?

将 Xcode 组创建为文件系统文件夹的工作流程

如何在对象内使用 objc_setAssociatedObject/objc_getAssociatedObject?