Ios 如何在图像的顶部和左侧生成阴影?
我在图像的右侧和底部添加了阴影 代码是Ios 如何在图像的顶部和左侧生成阴影?,ios,swift,swift3,Ios,Swift,Swift3,我在图像的右侧和底部添加了阴影 代码是 func addShadow(image: UIImage, blursize: CGFloat) -> UIImage { let shadowColor = UIColor(white:0, alpha: 0.8).cgColor let context = CGContext(data: nil, width: Int(image.size.width + blursize), height: Int(image.size.heig
func addShadow(image: UIImage, blursize: CGFloat) -> UIImage {
let shadowColor = UIColor(white:0, alpha: 0.8).cgColor
let context = CGContext(data: nil, width: Int(image.size.width + blursize), height: Int(image.size.height + blursize), bitsPerComponent: image.cgImage!.bitPerComponent, bytesPerRow: 0, space: CGColorSpaceCreateDeviceRGB(), bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue)!
context.setShadow(offset: CGSize(width: 0, height: 0), blur: blursize, color: shadowColor)
context.draw(image.cgImage!, in: CGRect(x:0,y:blursize,width:image.size.width, height: image.size.height), byTiling: false)
return UIImage(cgImage: context.makeImiage()!)
}
我需要在图像的左侧和顶部添加阴影。
怎么办?因为
CGSize
不能使用负数,你可能需要重写一些函数来使用CGFloat
来代替。setShadow
,看看这个答案@Eric,如果你唯一的任务是显示带阴影的图像,你可以使用UIImageView
获得这样的效果,我相信您正在将此效果添加到UIImage,因为您希望将其保存到照片中。你能告诉我我是否正确吗?谢谢你的留言。对我不想在UIImageView中添加阴影。您当前所做的不是在图像的底部和右侧添加阴影。您正在创建一个阴影,该阴影的位置与原始图像相同,但更大(由于模糊),并且仅对底部和右侧可见,因为其余部分已被剪裁。如果您希望获得与当前相同的效果,只需在计算CGContext
的大小时添加2*blurSize
而不是blurSize
,并在调用context.draw
时将x
设置为blurSize
。谢谢jcaron。因为CGSize
不能使用负数,您可能需要重写一些函数来使用CGFloat
而不是。setShadow
,看看这个答案@Eric,您可以通过使用UIImageView
获得这样的效果。如果您唯一的任务是显示带有阴影的图像,我相信您正在将此效果添加到UIImage,因为您希望将其保存到照片中。你能告诉我我是否正确吗?谢谢你的留言。对我不想在UIImageView中添加阴影。您当前所做的不是在图像的底部和右侧添加阴影。您正在创建一个阴影,该阴影的位置与原始图像相同,但更大(由于模糊),并且仅对底部和右侧可见,因为其余部分已被剪裁。如果您希望获得与当前相同的效果,只需在计算CGContext
的大小时添加2*blurSize
而不是blurSize
,并在调用context.draw
时将x
设置为blurSize
。谢谢jcaron。