我在我的xib中创建了一个uiview,背景颜色为清晰的颜色.当我在视图图层上应用阴影时,阴影不会出现.但是当我设置除了清晰颜色之外的背景颜色时,阴影就会显示出来.请帮忙.
这是我的代码
self.cView.layer.shadowColor=[UIColor whiteColor].CGColor;
self.cView.layer.shadowOffset=CGSizeZero;
self.cView.layer.shadowRadius=30.0;
self.cView.layer.shadowOpacity=1.0;
self.cView.layer.cornerRadius=10.0;
Run Code Online (Sandbox Code Playgroud)
Rok*_*arc 29
问题是,阴影实际上考虑了"上层".如果它上面没有任何东西就没有阴影:阴影是如何工作的
编辑:
从粘贴箱中复制了此配方
view.layer.shadowColor = [UIColor colorWithWhite:.5 alpha:1].CGColor;
view.layer.shadowRadius = 4.0f;
view.layer.shadowPath = CGPathCreateWithRect(CGRectMake(0, 0, 50, 50), NULL);
view.layer.shadowOpacity = 1.0f;
view.layer.shadowOffset = CGSizeMake(1, 1);
Run Code Online (Sandbox Code Playgroud)
但是我怀疑这对你有什么用处:结果是一个"画"的视图,它带有阴影的颜色和周围的阴影.
如果指定shadowPath属性
shadowView.layer.shadowPath =
UIBezierPath(
roundedRect: shadowView.bounds,
cornerRadius: 10).cgPath
Run Code Online (Sandbox Code Playgroud)
(或者需要任何拐角半径。)
即使使用.clear backgroundColor也可以使用。
请注意,您当然必须在layoutSubviews相关视图中执行此操作。
这是一个实际的完整工作示例:
import UIKit
@IBDesignable class LonelyShadow: UIView {
let corner: CGFloat = 20
override init(frame: CGRect) {
super.init(frame: frame)
common()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
common()
}
private func common() {
backgroundColor = .clear
clipsToBounds = false
layer.shadowColor = UIColor.yourColor.cgColor
layer.shadowOffset = CGSize(width: 0, height: 25)
layer.shadowOpacity = 0.3
layer.shadowRadius = 40
}
override func layoutSubviews() {
super.layoutSubviews()
layer.shadowPath = UIBezierPath(
roundedRect: bounds, cornerRadius: corner).cgPath
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11808 次 |
| 最近记录: |