Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在图像的顶部和左侧生成阴影?_Ios_Swift_Swift3 - Fatal编程技术网

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。