Skip to content
This repository was archived by the owner on Nov 24, 2021. It is now read-only.

Commit 5b947c6

Browse files
committed
Add default header view
1 parent 1935826 commit 5b947c6

File tree

12 files changed

+72
-4
lines changed

12 files changed

+72
-4
lines changed

Demo.xcodeproj/project.pbxproj

+8
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@
7171
44341CCF234490F90008503A /* Viewer.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 44341CC823448E420008503A /* Viewer.xcassets */; };
7272
4442A81D20C98CDA004B8BC3 /* UIViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4442A81C20C98CDA004B8BC3 /* UIViewExtensions.swift */; };
7373
4442A81E20C98CDA004B8BC3 /* UIViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4442A81C20C98CDA004B8BC3 /* UIViewExtensions.swift */; };
74+
4494E4F523449A6600176734 /* DefaultHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4494E4F423449A6600176734 /* DefaultHeaderView.swift */; };
75+
4494E4F623449A6600176734 /* DefaultHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4494E4F423449A6600176734 /* DefaultHeaderView.swift */; };
76+
4494E4F723449A6600176734 /* DefaultHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4494E4F423449A6600176734 /* DefaultHeaderView.swift */; };
7477
73465D7822DF7E4A00F91F9C /* Viewer.h in Headers */ = {isa = PBXBuildFile; fileRef = 73465D7622DF7E4A00F91F9C /* Viewer.h */; settings = {ATTRIBUTES = (Public, ); }; };
7578
73465D7B22DF7E4A00F91F9C /* Viewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73465D7422DF7E4900F91F9C /* Viewer.framework */; };
7679
73465D7C22DF7E4A00F91F9C /* Viewer.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 73465D7422DF7E4900F91F9C /* Viewer.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
@@ -165,6 +168,7 @@
165168
44341CC823448E420008503A /* Viewer.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Viewer.xcassets; sourceTree = "<group>"; };
166169
44341CCA23448ED60008503A /* ViewerAssets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewerAssets.swift; sourceTree = "<group>"; };
167170
4442A81C20C98CDA004B8BC3 /* UIViewExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewExtensions.swift; sourceTree = "<group>"; };
171+
4494E4F423449A6600176734 /* DefaultHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultHeaderView.swift; sourceTree = "<group>"; };
168172
73465D7422DF7E4900F91F9C /* Viewer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Viewer.framework; sourceTree = BUILT_PRODUCTS_DIR; };
169173
73465D7622DF7E4A00F91F9C /* Viewer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Viewer.h; sourceTree = "<group>"; };
170174
73465D7722DF7E4A00F91F9C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -276,6 +280,7 @@
276280
4442A81C20C98CDA004B8BC3 /* UIViewExtensions.swift */,
277281
44341CC823448E420008503A /* Viewer.xcassets */,
278282
44341CCA23448ED60008503A /* ViewerAssets.swift */,
283+
4494E4F423449A6600176734 /* DefaultHeaderView.swift */,
279284
);
280285
path = Source;
281286
sourceTree = "<group>";
@@ -582,6 +587,7 @@
582587
44341CCC234490E90008503A /* ViewerAssets.swift in Sources */,
583588
1438033E1C2452A1003CA252 /* NSIndexPath+Contiguous.swift in Sources */,
584589
E6D592841D226528006EF238 /* VideoProgressView.swift in Sources */,
590+
4494E4F523449A6600176734 /* DefaultHeaderView.swift in Sources */,
585591
14C327B91CBE69F800CC0F98 /* PaginatedScrollView.swift in Sources */,
586592
143803401C2452A1003CA252 /* UIImage+CenteredFrame.swift in Sources */,
587593
);
@@ -610,6 +616,7 @@
610616
44341CCD234490E90008503A /* ViewerAssets.swift in Sources */,
611617
14E5F7711E78329C00D970EF /* ViewableController.swift in Sources */,
612618
14E5F7621E7831B000D970EF /* AppDelegate.swift in Sources */,
619+
4494E4F623449A6600176734 /* DefaultHeaderView.swift in Sources */,
613620
14E5F7761E78329C00D970EF /* NSIndexPath+Contiguous.swift in Sources */,
614621
14E5F7771E78329C00D970EF /* UIImage+CenteredFrame.swift in Sources */,
615622
);
@@ -623,6 +630,7 @@
623630
73465D9E22DF7EC200F91F9C /* HeaderView.swift in Sources */,
624631
73465D9F22DF7EC200F91F9C /* Photo.swift in Sources */,
625632
73465DA022DF7EC200F91F9C /* PhotoCell.swift in Sources */,
633+
4494E4F723449A6600176734 /* DefaultHeaderView.swift in Sources */,
626634
73465DA122DF7EC200F91F9C /* PhotosController.swift in Sources */,
627635
73465DA222DF7EC200F91F9C /* PopupController.swift in Sources */,
628636
73465DA322DF7EC200F91F9C /* PhotosCollectionLayout.swift in Sources */,

Library/HeaderView.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class HeaderView: UIView {
1111
static let TopMargin = CGFloat(15.0)
1212

1313
lazy var clearButton: UIButton = {
14-
let image = UIImage(named: "clear", in: Bundle(for: type(of: self)), compatibleWith: nil)!
14+
let image = UIImage.close
1515
let button = UIButton(type: .custom)
1616
button.setImage(image, for: .normal)
1717
button.addTarget(self, action: #selector(HeaderView.clearAction(button:)), for: .touchUpInside)
Binary file not shown.
Binary file not shown.
Binary file not shown.

Source/DefaultHeaderView.swift

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import UIKit
2+
3+
protocol DefaultHeaderViewDelegate: class {
4+
func headerView(_ headerView: DefaultHeaderView, didPressClearButton button: UIButton)
5+
}
6+
7+
class DefaultHeaderView: UIView {
8+
weak var delegate: DefaultHeaderViewDelegate?
9+
static let ButtonSize = CGFloat(50.0)
10+
static let TopMargin = CGFloat(15.0)
11+
12+
lazy var clearButton: UIButton = {
13+
let image = UIImage.close
14+
let button = UIButton(type: .custom)
15+
button.setImage(image, for: .normal)
16+
button.addTarget(self, action: #selector(DefaultHeaderView.clearAction(button:)), for: .touchUpInside)
17+
18+
return button
19+
}()
20+
21+
override init(frame: CGRect) {
22+
super.init(frame: frame)
23+
24+
self.addSubview(self.clearButton)
25+
}
26+
27+
required init?(coder _: NSCoder) {
28+
fatalError("init(coder:) has not been implemented")
29+
}
30+
31+
override func layoutSubviews() {
32+
super.layoutSubviews()
33+
34+
self.clearButton.frame = CGRect(x: 0, y: HeaderView.TopMargin, width: HeaderView.ButtonSize, height: HeaderView.ButtonSize)
35+
}
36+
37+
@objc func clearAction(button: UIButton) {
38+
self.delegate?.headerView(self, didPressClearButton: button)
39+
}
40+
}

Resources/SharedAssets.xcassets/clear.imageset/Contents.json renamed to Source/Viewer.xcassets/close.imageset/Contents.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
"images" : [
33
{
44
"idiom" : "universal",
5-
"filename" : "clear.png",
5+
"filename" : "close.png",
66
"scale" : "1x"
77
},
88
{
99
"idiom" : "universal",
10-
"filename" : "clear@2x.png",
10+
"filename" : "close@2x.png",
1111
"scale" : "2x"
1212
},
1313
{
1414
"idiom" : "universal",
15-
"filename" : "clear@3x.png",
15+
"filename" : "close@3x.png",
1616
"scale" : "3x"
1717
}
1818
],
405 Bytes
Loading
Loading
Loading

Source/ViewerAssets.swift

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ extension UIImage {
1010
static var play = UIImage(name: "play")
1111
static var `repeat` = UIImage(name: "repeat")
1212
static var seek = UIImage(name: "seek")
13+
public static var close = UIImage(name: "close")
1314

1415
convenience init(name: String) {
1516
self.init(named: name, in: ViewerAssets.bundle, compatibleWith: nil)!

Source/ViewerController.swift

+19
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,19 @@ extension ViewerController {
358358
headerView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
359359
headerView.heightAnchor.constraint(equalToConstant: ViewerController.HeaderHeight)
360360
])
361+
} else {
362+
let defaultHeaderView = DefaultHeaderView()
363+
defaultHeaderView.delegate = self
364+
defaultHeaderView.translatesAutoresizingMaskIntoConstraints = false
365+
defaultHeaderView.alpha = 0
366+
self.view.addSubview(defaultHeaderView)
367+
368+
NSLayoutConstraint.activate([
369+
defaultHeaderView.topAnchor.constraint(equalTo: view.compatibleTopAnchor),
370+
defaultHeaderView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
371+
defaultHeaderView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
372+
defaultHeaderView.heightAnchor.constraint(equalToConstant: ViewerController.HeaderHeight)
373+
])
361374
}
362375

363376
if let footerView = self.footerView {
@@ -694,3 +707,9 @@ extension ViewerController: UIPageViewControllerDataSource {
694707
return nil
695708
}
696709
}
710+
711+
extension ViewerController: DefaultHeaderViewDelegate {
712+
func headerView(_ headerView: DefaultHeaderView, didPressClearButton button: UIButton) {
713+
dismiss(nil)
714+
}
715+
}

0 commit comments

Comments
 (0)