Skip to content

Commit 90c8663

Browse files
author
Jasper
committed
【增加】增加ImageGallery
1 parent 91fc8f5 commit 90c8663

29 files changed

+1080
-651
lines changed

CYUtilProjectSwift/CYUtilProjectSwift/CYUtilProjectSwift.xcodeproj/project.pbxproj

Lines changed: 96 additions & 8 deletions
Large diffs are not rendered by default.

CYUtilProjectSwift/CYUtilProjectSwift/CYUtilProjectSwift/Assets.xcassets/AppIcon.appiconset/Contents.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
{
22
"images" : [
3+
{
4+
"idiom" : "iphone",
5+
"size" : "20x20",
6+
"scale" : "2x"
7+
},
8+
{
9+
"idiom" : "iphone",
10+
"size" : "20x20",
11+
"scale" : "3x"
12+
},
313
{
414
"idiom" : "iphone",
515
"size" : "29x29",
@@ -30,6 +40,16 @@
3040
"size" : "60x60",
3141
"scale" : "3x"
3242
},
43+
{
44+
"idiom" : "ipad",
45+
"size" : "20x20",
46+
"scale" : "1x"
47+
},
48+
{
49+
"idiom" : "ipad",
50+
"size" : "20x20",
51+
"scale" : "2x"
52+
},
3353
{
3454
"idiom" : "ipad",
3555
"size" : "29x29",
@@ -64,6 +84,11 @@
6484
"idiom" : "ipad",
6585
"size" : "83.5x83.5",
6686
"scale" : "2x"
87+
},
88+
{
89+
"idiom" : "ios-marketing",
90+
"size" : "1024x1024",
91+
"scale" : "1x"
6792
}
6893
],
6994
"info" : {

CYUtilProjectSwift/CYUtilProjectSwift/CYUtilProjectSwift/Base.lproj/Main.storyboard

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,74 @@
172172
</subviews>
173173
</tableViewCellContentView>
174174
</tableViewCell>
175+
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="wlt-uU-GT5">
176+
<rect key="frame" x="0.0" y="352" width="375" height="44"/>
177+
<autoresizingMask key="autoresizingMask"/>
178+
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="wlt-uU-GT5" id="kwk-pF-nKC">
179+
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
180+
<autoresizingMask key="autoresizingMask"/>
181+
<subviews>
182+
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="PresentationStyleTestViewController" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CyO-Dj-xCC">
183+
<rect key="frame" x="24" y="11" width="323" height="21"/>
184+
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
185+
<fontDescription key="fontDescription" type="system" pointSize="17"/>
186+
<nil key="textColor"/>
187+
<nil key="highlightedColor"/>
188+
</label>
189+
</subviews>
190+
</tableViewCellContentView>
191+
</tableViewCell>
192+
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="Pwn-yA-VcU">
193+
<rect key="frame" x="0.0" y="396" width="375" height="44"/>
194+
<autoresizingMask key="autoresizingMask"/>
195+
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Pwn-yA-VcU" id="FSu-Zj-NCo">
196+
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
197+
<autoresizingMask key="autoresizingMask"/>
198+
<subviews>
199+
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="CYAlertController" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jPC-Wt-Zig">
200+
<rect key="frame" x="24" y="11" width="323" height="21"/>
201+
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
202+
<fontDescription key="fontDescription" type="system" pointSize="17"/>
203+
<nil key="textColor"/>
204+
<nil key="highlightedColor"/>
205+
</label>
206+
</subviews>
207+
</tableViewCellContentView>
208+
</tableViewCell>
209+
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="hy7-2e-H6l">
210+
<rect key="frame" x="0.0" y="440" width="375" height="44"/>
211+
<autoresizingMask key="autoresizingMask"/>
212+
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="hy7-2e-H6l" id="PZ2-Iy-Bgh">
213+
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
214+
<autoresizingMask key="autoresizingMask"/>
215+
<subviews>
216+
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="ImageGallery" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pDC-gc-fJQ">
217+
<rect key="frame" x="24" y="11" width="323" height="21"/>
218+
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
219+
<fontDescription key="fontDescription" type="system" pointSize="17"/>
220+
<nil key="textColor"/>
221+
<nil key="highlightedColor"/>
222+
</label>
223+
</subviews>
224+
</tableViewCellContentView>
225+
</tableViewCell>
226+
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="MHS-rL-7eM">
227+
<rect key="frame" x="0.0" y="484" width="375" height="44"/>
228+
<autoresizingMask key="autoresizingMask"/>
229+
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="MHS-rL-7eM" id="wpG-Bm-fSG">
230+
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
231+
<autoresizingMask key="autoresizingMask"/>
232+
<subviews>
233+
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="SingleImageGallery" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="d5r-rb-x9l">
234+
<rect key="frame" x="24" y="11" width="323" height="21"/>
235+
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
236+
<fontDescription key="fontDescription" type="system" pointSize="17"/>
237+
<nil key="textColor"/>
238+
<nil key="highlightedColor"/>
239+
</label>
240+
</subviews>
241+
</tableViewCellContentView>
242+
</tableViewCell>
175243
</cells>
176244
</tableViewSection>
177245
</sections>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//
2+
// ImageGalleryTestViewController.swift
3+
// CYUtilProjectSwift
4+
//
5+
// Created by Jasper on 28/02/2018.
6+
// Copyright © 2018 Jasper. All rights reserved.
7+
//
8+
9+
import UIKit
10+
11+
class ImageGalleryTestViewController: UIViewController {
12+
13+
var imageGallery: ImageGalleryView?
14+
15+
override func viewDidLoad() {
16+
super.viewDidLoad()
17+
18+
self.edgesForExtendedLayout = []
19+
20+
imageGallery = ImageGalleryView(images: [UIImage(named: "home_header_realname_auth")!,
21+
UIImage(named: "home_header_recharge")!,
22+
UIImage(named: "home_header_register")!],
23+
frame: self.view.bounds)
24+
imageGallery?.autoresizingMask = [.flexibleHeight, .flexibleWidth]
25+
imageGallery?.maximumZoomScale = 2.0
26+
self.view.addSubview(imageGallery!)
27+
}
28+
29+
override func viewWillAppear(_ animated: Bool) {
30+
super.viewWillAppear(animated)
31+
}
32+
33+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
//
2+
// PresentationStyleTestViewController.swift
3+
// CYUtilProjectSwift
4+
//
5+
// Created by Jasper on 18/01/2018.
6+
// Copyright © 2018 Jasper. All rights reserved.
7+
//
8+
9+
import UIKit
10+
11+
class PresentationStyleTestViewController: UIViewController, UIViewControllerTransitioningDelegate {
12+
13+
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
14+
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
15+
16+
self.transitioningDelegate = self
17+
self.modalPresentationStyle = .custom
18+
}
19+
20+
required init?(coder aDecoder: NSCoder) {
21+
fatalError("init(coder:) has not been implemented")
22+
}
23+
24+
override func viewDidLoad() {
25+
super.viewDidLoad()
26+
27+
28+
self.view.backgroundColor = UIColor.black.withAlphaComponent(0.5)
29+
}
30+
31+
override func didReceiveMemoryWarning() {
32+
super.didReceiveMemoryWarning()
33+
// Dispose of any resources that can be recreated.
34+
}
35+
36+
37+
/*
38+
// MARK: - Navigation
39+
40+
// In a storyboard-based application, you will often want to do a little preparation before navigation
41+
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
42+
// Get the new view controller using segue.destinationViewController.
43+
// Pass the selected object to the new view controller.
44+
}
45+
*/
46+
47+
// MARK: UIViewControllerTransitioningDelegate
48+
func presentationController(forPresented presented: UIViewController, presenting: UIViewController?, source: UIViewController) -> UIPresentationController? {
49+
// return AlertPresentationController(presentedViewController: presented, presenting: presenting)
50+
return UIPresentationController(presentedViewController: presented, presenting: presenting)
51+
}
52+
53+
}
54+
55+
class AlertPresentationController: UIPresentationController {
56+
override var shouldRemovePresentersView: Bool {
57+
return false
58+
}
59+
}

CYUtilProjectSwift/CYUtilProjectSwift/CYUtilProjectSwift/Test/QRCodeTestViewController.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ class QRCodeTestViewController: UIViewController {
2525
imageView.image = qrcode
2626
self.view.addSubview(imageView)
2727
}
28+
29+
override func viewWillAppear(_ animated: Bool) {
30+
super.viewWillAppear(animated)
31+
32+
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "red")?.resizableImage(withCapInsets: UIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1)), for: .default)
33+
}
2834

2935
override func didReceiveMemoryWarning() {
3036
super.didReceiveMemoryWarning()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
//
2+
// SingleImageGalleryTestViewController.swift
3+
// CYUtilProjectSwift
4+
//
5+
// Created by Jasper on 28/02/2018.
6+
// Copyright © 2018 Jasper. All rights reserved.
7+
//
8+
9+
import UIKit
10+
11+
class SingleImageGalleryTestViewController: UIViewController {
12+
13+
var singleImageGallery: SingleImageGalleryView?
14+
15+
override func viewDidLoad() {
16+
super.viewDidLoad()
17+
self.edgesForExtendedLayout = []
18+
self.view.backgroundColor = UIColor.white
19+
20+
singleImageGallery = SingleImageGalleryView(image: UIImage(named: "logo5858")!,
21+
frame: CGRect(x: 0, y: 10, width: 400, height: 700))
22+
singleImageGallery?.maximumZoomScale = 5.0
23+
singleImageGallery?.minimumZoomScale = 0.2
24+
self.view.addSubview(singleImageGallery!)
25+
}
26+
27+
override func didReceiveMemoryWarning() {
28+
super.didReceiveMemoryWarning()
29+
// Dispose of any resources that can be recreated.
30+
}
31+
32+
33+
/*
34+
// MARK: - Navigation
35+
36+
// In a storyboard-based application, you will often want to do a little preparation before navigation
37+
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
38+
// Get the new view controller using segue.destinationViewController.
39+
// Pass the selected object to the new view controller.
40+
}
41+
*/
42+
43+
}

CYUtilProjectSwift/CYUtilProjectSwift/CYUtilProjectSwift/ViewController.swift

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,17 @@ class ViewController: UITableViewController, WKNavigationDelegate, WKUIDelegate
5454

5555
if #available(iOS 11, *) {
5656

57-
navigationController?.navigationBar.prefersLargeTitles = true
57+
navigationController?.navigationBar.prefersLargeTitles = false
5858
}
5959
}
6060

61+
override func viewWillAppear(_ animated: Bool) {
62+
super.viewWillAppear(animated)
63+
64+
65+
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "blue")?.resizableImage(withCapInsets: UIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1)), for: .default)
66+
}
67+
6168
override func viewDidAppear(_ animated: Bool) {
6269
super.viewDidAppear(animated)
6370
}
@@ -73,15 +80,15 @@ class ViewController: UITableViewController, WKNavigationDelegate, WKUIDelegate
7380
let documentsList = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
7481
let fileUrl = documentsList[0] + "/record.caf"
7582
let result = CYAudioRecordUtils.record(URL: URL(fileURLWithPath: fileUrl)) { (url, error, success) in
76-
83+
7784
if success {
78-
85+
7986
print("success")
8087
} else {
81-
88+
8289
print(error ?? "录制出错")
8390
}
84-
}
91+
}
8592

8693
if result {
8794

@@ -174,7 +181,7 @@ class ViewController: UITableViewController, WKNavigationDelegate, WKUIDelegate
174181

175182
let web = WebViewController(style: webStyle)
176183
web.delegate = self
177-
_ = web.load(URLRequest(url: URL(string: "http://www.qguanzi.com")!))
184+
_ = web.load(URLRequest(url: URL(string: "https://www.qguanzi.com")!))
178185

179186
web.addNavigationRightItem(UIBarButtonItem(title: "更多", style: .plain, target: nil, action: nil)) { (item) in
180187
print("点击更多啦啦啦啦啦啦啦啦啦啦啦")
@@ -191,6 +198,18 @@ class ViewController: UITableViewController, WKNavigationDelegate, WKUIDelegate
191198
} else if indexPath.row == 7 {
192199
let qrcode = QRCodeTestViewController()
193200
navigationController?.pushViewController(qrcode, animated: true)
201+
} else if indexPath.row == 8 {
202+
let presentationTest = PresentationStyleTestViewController()
203+
navigationController?.present(presentationTest, animated: true, completion: nil)
204+
} else if indexPath.row == 9 {
205+
let alert = CYAlertController()
206+
navigationController?.present(alert, animated: true, completion: nil)
207+
} else if indexPath.row == 10 {
208+
let imageGallery = ImageGalleryTestViewController()
209+
navigationController?.pushViewController(imageGallery, animated: true)
210+
} else if indexPath.row == 11 {
211+
let singleImageGallery = SingleImageGalleryTestViewController()
212+
navigationController?.pushViewController(singleImageGallery, animated: true)
194213
}
195214
}
196215
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
//
2+
// CYAlertViewAction.swift
3+
// CYUtilProjectSwift
4+
//
5+
// Created by Conner on 5/11/16.
6+
// Copyright © 2016 Conner. All rights reserved.
7+
//
8+
9+
import UIKit
10+
11+
public class CYAlertAction: UIButton {
12+
13+
private(set) var title: String?
14+
private(set) var image: UIImage?
15+
private(set) var handler: ((CYAlertAction) -> Void)?
16+
17+
public init(title: String?, handler: ((CYAlertAction) -> Void)? = nil) {
18+
self.title = title
19+
self.handler = handler
20+
super.init(frame: .zero)
21+
22+
configureAction()
23+
}
24+
25+
public init(image: UIImage?, handler: ((CYAlertAction) -> Void)? = nil) {
26+
self.image = image
27+
self.handler = handler
28+
super.init(frame: .zero)
29+
30+
configureAction()
31+
}
32+
33+
public required init?(coder aDecoder: NSCoder) {
34+
super.init(coder: aDecoder)
35+
}
36+
37+
private func configureAction() {
38+
if let title = self.title {
39+
self.setTitle(title, for: .normal)
40+
}
41+
if let image = self.image {
42+
self.setImage(image, for: .normal)
43+
self.setImage(image, for: .highlighted)
44+
}
45+
self.backgroundColor = UIColor.white
46+
}
47+
48+
override public var isHighlighted: Bool {
49+
didSet {
50+
self.backgroundColor = UIColor.white
51+
}
52+
}
53+
}
54+

0 commit comments

Comments
 (0)