Skip to content

Commit ce4cba8

Browse files
committed
Best Performances
1 parent 15f3d91 commit ce4cba8

File tree

3 files changed

+20
-21
lines changed

3 files changed

+20
-21
lines changed

PPMusicImageShadow/PPMusicImageShadow/PPMusicImageShadow.swift

+12-20
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class PPMusicImageShadow: UIView {
1717

1818
self.imageView?.contentMode = newValue
1919
self.blurredImageView?.contentMode = newValue
20-
20+
2121
}get{
2222
return super.contentMode
2323
}
@@ -46,7 +46,7 @@ class PPMusicImageShadow: UIView {
4646
imageWidth = self.frame.size.width;
4747
imageHeight = self.frame.size.height;
4848
}
49-
49+
5050
return CGSize(width: imageWidth, height: imageHeight)
5151
}
5252

@@ -74,11 +74,14 @@ class PPMusicImageShadow: UIView {
7474

7575
var imageView : UIImageView!
7676
var blurredImageView : UIImageView!
77+
var blurWork : DispatchWorkItem?
7778

7879
func calculateBlurredImage(){
80+
81+
7982
#if !TARGET_INTERFACE_BUILDER
80-
81-
DispatchQueue.global(qos: DispatchQoS.QoSClass.userInteractive).async {
83+
blurWork?.cancel()
84+
blurWork = DispatchWorkItem(qos: DispatchQoS.userInteractive, flags: DispatchWorkItemFlags.noQoS) {
8285

8386
if let imageToblur = self.image{
8487

@@ -101,25 +104,16 @@ class PPMusicImageShadow: UIView {
101104
}
102105

103106
guard
104-
let resizedImage = containerImage.resized(withPercentage: self.resizeConstant),
105-
let ciimage = CIImage.init(image:resizedImage),
107+
let resizedImage = containerImage.resized(withPercentage: self.resizeConstant),
108+
let ciimage = CIImage.init(image:resizedImage),
106109
let blurredImage = self.applyBlur(ciimage: ciimage) else {return}
107110

108-
let data1 = UIImageJPEGRepresentation(resizedImage, 1.0)
109-
let dir1 = NSHomeDirectory().appending("/Hellcont.jpg")
110-
try? data1?.write(to: URL.init(fileURLWithPath: dir1))
111-
print("dir : \(dir1)")
112-
let data = UIImageJPEGRepresentation(blurredImage, 1.0)
113-
let dir = NSHomeDirectory().appending("/Hello.jpg")
114-
try? data?.write(to: URL.init(fileURLWithPath: dir))
115-
print("dir : \(dir)")
116-
117111
DispatchQueue.main.async {
118112
self.blurredImageView?.image = blurredImage
119113
}
120114
}
121115
}
122-
116+
blurWork?.perform()
123117

124118
#else
125119
self.blurredImageView?.image = self.image
@@ -185,9 +179,8 @@ class PPMusicImageShadow: UIView {
185179
override func layoutSubviews() {
186180
super.layoutSubviews()
187181

188-
self.calculateBlurredImage()
189182
imageView?.frame = self.bounds
190-
183+
191184
self.blurredImageView?.frame = self.bounds
192185
self.blurredImageView?.frame.size = getNewImageSize().scaled(by: shadowSizeConstant)
193186

@@ -202,7 +195,6 @@ class PPMusicImageShadow: UIView {
202195
mask.frame = self.blurredImageView!.bounds
203196
//self.blurredImageView?.layer.mask = mask
204197
self.blurredImageView?.layer.masksToBounds = false
205-
206198
}
207199

208200
override init(frame: CGRect) {
@@ -232,10 +224,10 @@ class PPMusicImageShadow: UIView {
232224

233225
imageView = UIImageView()
234226
blurredImageView = UIImageView()
235-
self.calculateBlurredImage()
236227
self.addSubview(blurredImageView!)
237228
self.addSubview(imageView!)
238229
self.imageView?.contentMode = self.contentMode
239230
self.blurredImageView?.contentMode = self.contentMode
231+
self.calculateBlurredImage()
240232
}
241233
}

PPMusicImageShadow/PPMusicImageShadowExample/Base.lproj/Main.storyboard

+3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@
3131
</constraints>
3232
<userDefinedRuntimeAttributes>
3333
<userDefinedRuntimeAttribute type="image" keyPath="image" value="italy-2080072_640.jpg"/>
34+
<userDefinedRuntimeAttribute type="number" keyPath="blurRadius">
35+
<real key="value" value="3"/>
36+
</userDefinedRuntimeAttribute>
3437
</userDefinedRuntimeAttributes>
3538
</view>
3639
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="T17-Ox-kpO">

PPMusicImageShadow/PPMusicImageShadowExample/ViewController.swift

+5-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class ViewController: UIViewController {
1818

1919
@IBAction func slider1(_ sender: UISlider) {
2020

21-
imageView.blurRadius = CGFloat(sender.value * 8)
21+
imageView.blurRadius = CGFloat(sender.value * 3)
2222
}
2323

2424
@IBAction func slider2(_ sender: UISlider) {
@@ -29,6 +29,10 @@ class ViewController: UIViewController {
2929
super.didReceiveMemoryWarning()
3030
// Dispose of any resources that can be recreated.
3131
}
32+
33+
override func viewDidLayoutSubviews() {
34+
super.viewDidLayoutSubviews()
35+
}
3236

3337

3438
}

0 commit comments

Comments
 (0)