Skip to content

Commit 6620c62

Browse files
authored
Merge pull request #1 from olddonkey/master
2 parents 655e4ba + 5c3d975 commit 6620c62

File tree

5 files changed

+44
-51
lines changed

5 files changed

+44
-51
lines changed

ShadowView/ShadowView/ShadowView+BlurProcess.swift

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,34 +17,34 @@ extension ShadowView{
1717
}
1818

1919
let imageView = UIImageView()
20-
imageView.frame.size = self.frame.size.scaled(by: shadowScale)
21-
imageView.center = CGPoint(x:self.bounds.midX,y:self.bounds.midY)
20+
imageView.frame.size = frame.size.scaled(by: shadowScale)
21+
imageView.center = CGPoint(x:bounds.midX,y:bounds.midY)
2222
imageView.layer.masksToBounds = false
23-
self.shadowImageView = imageView
24-
self.insertSubview(imageView,at:0)
23+
shadowImageView = imageView
24+
insertSubview(imageView,at:0)
2525
}
2626

2727

2828

2929
func updateShadow(){
3030

3131
self.shadowImageView.image = nil
32-
DispatchQueue.global(qos: DispatchQoS.QoSClass.utility).async {
33-
self.createLayerImage()
32+
DispatchQueue.global(qos: DispatchQoS.QoSClass.utility).async { [weak self] in
33+
self?.createLayerImage()
3434
}
3535
}
3636

3737
private func createLayerImage(){
3838

39-
let image = self.asImage
39+
let image = asImage
4040
let containerLayer = CALayer()
4141
let imageSize = image.size
42-
containerLayer.frame = CGRect(origin: .zero, size: imageSize.scaled(by:self.scaleImageConstant))
42+
containerLayer.frame = CGRect(origin: .zero, size: imageSize.scaled(by:scaleImageConstant))
4343
containerLayer.backgroundColor = UIColor.clear.cgColor
4444
let blurImageLayer = CALayer()
4545
blurImageLayer.frame = CGRect(origin: .zero,size: imageSize)
4646
blurImageLayer.position = CGPoint(x:containerLayer.bounds.midX,y:containerLayer.bounds.midY)
47-
blurImageLayer.contents = image.applyBlurWithRadius(0, tintColor: self.shadowColor, saturationDeltaFactor: self.shadowSaturation)?.cgImage
47+
blurImageLayer.contents = image.applyBlurWithRadius(0, tintColor: shadowColor, saturationDeltaFactor: shadowSaturation)?.cgImage
4848

4949
blurImageLayer.masksToBounds = false
5050
containerLayer.addSublayer(blurImageLayer)
@@ -53,15 +53,15 @@ extension ShadowView{
5353

5454
let resizeImageConstant :CGFloat = 1
5555
guard let resizedContainerImage = containerImage.resized(withPercentage: resizeImageConstant),
56-
let blurredImage = resizedContainerImage.applyBlur(blurRadius: self.blurRadius)
56+
let blurredImage = resizedContainerImage.applyBlur(blurRadius: blurRadius)
5757
else {
5858
return
5959
}
6060

61-
self.layer.masksToBounds = false
61+
layer.masksToBounds = false
6262

63-
DispatchQueue.main.async {
64-
self.shadowImageView?.image = blurredImage
63+
DispatchQueue.main.async { [weak self] in
64+
self?.shadowImageView?.image = blurredImage
6565
}
6666

6767
}

ShadowView/ShadowView/ShadowView.swift

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,60 +10,53 @@ import UIKit
1010

1111
class ShadowView: UIView {
1212

13-
lazy var blurOperationQueue : OperationQueue = {
14-
let operationQueue = OperationQueue.init()
15-
operationQueue.maxConcurrentOperationCount = 1
16-
operationQueue.qualityOfService = .userInteractive
17-
return operationQueue
18-
}()
19-
internal var blurWork : DispatchWorkItem?
2013
internal var blurRadius :CGFloat = 5.0
2114
var shadowImageView : UIImageView!
2215
let scaleImageConstant :CGFloat = 3
2316
var correctShadowScale : CGFloat{
24-
return self.shadowScale + scaleImageConstant - 1
17+
return shadowScale + scaleImageConstant - 1
2518
}
2619

2720
override init(frame: CGRect) {
2821
super.init(frame: frame)
29-
self.addImageView()
22+
addImageView()
3023
}
3124

3225
required init?(coder aDecoder: NSCoder) {
3326
super.init(coder: aDecoder)
34-
self.addImageView()
27+
addImageView()
3528
}
3629

3730
@IBInspectable var shadowScale : CGFloat = 1{
3831
didSet{
39-
self.layoutSubviews()
32+
layoutSubviews()
4033
}
4134
}
4235

4336
@IBInspectable var shadowSaturation : CGFloat = 1{
4437
didSet{
45-
self.updateShadow()
38+
updateShadow()
4639
}
4740
}
4841
private var shadowTintColor : UIColor?
4942
override var shadowColor: UIColor?{
5043
get{
5144
return shadowTintColor
5245
}set{
53-
self.shadowTintColor = newValue
46+
shadowTintColor = newValue
5447
}
5548
}
5649

5750
override public var shadowOffset : CGSize{
5851
didSet{
59-
self.layoutSubviews()
52+
layoutSubviews()
6053
}
6154
}
6255

6356
override public var shadowRadius : CGFloat{
6457
set{
65-
self.blurRadius = newValue
66-
self.updateShadow()
58+
blurRadius = newValue
59+
updateShadow()
6760
}
6861
get{
6962
return blurRadius
@@ -72,24 +65,24 @@ class ShadowView: UIView {
7265

7366
override var shadowOpacity: Float{
7467
set{
75-
self.shadowImageView.alpha = CGFloat(newValue)
68+
shadowImageView.alpha = CGFloat(newValue)
7669
}
7770
get{
78-
return Float(self.shadowImageView.alpha)
71+
return Float(shadowImageView.alpha)
7972
}
8073
}
8174

8275
override func didMoveToSuperview() {
8376
super.didMoveToSuperview()
84-
self.updateShadow()
77+
updateShadow()
8578
}
8679

8780
//Reload the image if the view changed.
8881
override func layoutSubviews() {
8982
super.layoutSubviews()
9083

91-
self.shadowImageView.frame.size = self.frame.size.scaled(by: correctShadowScale)
92-
self.shadowImageView.center = CGPoint(x:self.bounds.midX + self.shadowOffset.width,y:self.bounds.midY + self.shadowOffset.height)
84+
shadowImageView.frame.size = frame.size.scaled(by: correctShadowScale)
85+
shadowImageView.center = CGPoint(x:bounds.midX + shadowOffset.width,y:bounds.midY + shadowOffset.height)
9386

9487
}
9588

ShadowView/ShadowView/UIImage+Size.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ extension UIImage{
3434

3535
func applyBlur(blurRadius:CGFloat) -> UIImage?{
3636

37-
guard let ciImage = CIImage.init(image: self) else{return nil}
37+
guard let ciImage = CIImage(image: self) else {return nil}
3838

3939
if let filter = CIFilter(name: "CIGaussianBlur") {
4040

@@ -46,8 +46,8 @@ extension UIImage{
4646
?? EAGLContext(api: EAGLRenderingAPI.openGLES1)
4747

4848
let context = eaglContext == nil ?
49-
CIContext.init(options: nil)
50-
: CIContext.init(eaglContext: eaglContext!)
49+
CIContext(options: nil)
50+
: CIContext(eaglContext: eaglContext!)
5151

5252
if let output = filter.outputImage,
5353
let cgimg = context.createCGImage(output, from: ciImage.extent)

ShadowView/ShadowView/UIView+Image.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ extension CALayer{
2020

2121
///Returns a UIImage copy of the layer
2222
var asImage : UIImage{
23-
UIGraphicsBeginImageContext(self.frame.size)
24-
self.render(in: UIGraphicsGetCurrentContext()!)
23+
UIGraphicsBeginImageContext(frame.size)
24+
render(in: UIGraphicsGetCurrentContext()!)
2525
let image = UIGraphicsGetImageFromCurrentImageContext()
2626
UIGraphicsEndImageContext()
2727
if let cgImage = image?.cgImage {
28-
return UIImage.init(cgImage: cgImage)
28+
return UIImage(cgImage: cgImage)
2929
} else {
30-
return UIImage.init()
30+
return UIImage()
3131
}
3232
}
3333
}

ShadowView/ShadowView/UIView+Shadow.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,49 +12,49 @@ extension UIView{
1212

1313
@IBInspectable public var shadowRadius : CGFloat{
1414
set{
15-
self.layer.shadowRadius = newValue
15+
layer.shadowRadius = newValue
1616
layer.masksToBounds = newValue < 0
1717
}
1818
get{
19-
return self.layer.shadowRadius
19+
return layer.shadowRadius
2020
}
2121
}
2222

2323
@IBInspectable public var shadowOffset : CGSize{
2424
set{
25-
self.layer.shadowOffset = newValue
25+
layer.shadowOffset = newValue
2626
}
2727
get{
28-
return self.layer.shadowOffset
28+
return layer.shadowOffset
2929
}
3030
}
3131

3232

3333
@IBInspectable public var shadowColor : UIColor?{
3434
set{
35-
self.layer.shadowColor = newValue?.cgColor
35+
layer.shadowColor = newValue?.cgColor
3636
}
3737
get{
38-
return UIColor.init(cgColor: self.layer.shadowColor ?? UIColor().cgColor)
38+
return UIColor(cgColor: layer.shadowColor ?? UIColor().cgColor)
3939
}
4040
}
4141

4242
@IBInspectable public var shadowOpacity : Float{
4343
set{
44-
self.layer.shadowOpacity = newValue
44+
layer.shadowOpacity = newValue
4545
layer.masksToBounds = newValue < 0
4646
}
4747
get{
48-
return self.layer.shadowOpacity
48+
return layer.shadowOpacity
4949
}
5050
}
5151

5252
@IBInspectable var shadowPath : CGPath?{
5353
set{
54-
self.layer.shadowPath = newValue
54+
layer.shadowPath = newValue
5555
}
5656
get{
57-
return self.layer.shadowPath
57+
return layer.shadowPath
5858
}
5959
}
6060
}

0 commit comments

Comments
 (0)