@@ -0,0 +1,5 @@ |
||
1 |
+<?xml version="1.0" encoding="UTF-8"?> |
|
2 |
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
|
3 |
+<plist version="1.0"> |
|
4 |
+<dict/> |
|
5 |
+</plist> |
@@ -0,0 +1,18 @@ |
||
1 |
+<?xml version="1.0" encoding="UTF-8"?> |
|
2 |
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
|
3 |
+<plist version="1.0"> |
|
4 |
+<dict> |
|
5 |
+ <key>BuildLocationStyle</key> |
|
6 |
+ <string>UseAppPreferences</string> |
|
7 |
+ <key>CustomBuildLocationType</key> |
|
8 |
+ <string>RelativeToDerivedData</string> |
|
9 |
+ <key>DerivedDataLocationStyle</key> |
|
10 |
+ <string>Default</string> |
|
11 |
+ <key>EnabledFullIndexStoreVisibility</key> |
|
12 |
+ <false/> |
|
13 |
+ <key>IssueFilterStyle</key> |
|
14 |
+ <string>ShowActiveSchemeOnly</string> |
|
15 |
+ <key>LiveSourceIssuesEnabled</key> |
|
16 |
+ <true/> |
|
17 |
+</dict> |
|
18 |
+</plist> |
@@ -0,0 +1,21 @@ |
||
1 |
+{ |
|
2 |
+ "images" : [ |
|
3 |
+ { |
|
4 |
+ "idiom" : "universal", |
|
5 |
+ "filename" : "未命名设计.png", |
|
6 |
+ "scale" : "1x" |
|
7 |
+ }, |
|
8 |
+ { |
|
9 |
+ "idiom" : "universal", |
|
10 |
+ "scale" : "2x" |
|
11 |
+ }, |
|
12 |
+ { |
|
13 |
+ "idiom" : "universal", |
|
14 |
+ "scale" : "3x" |
|
15 |
+ } |
|
16 |
+ ], |
|
17 |
+ "info" : { |
|
18 |
+ "version" : 1, |
|
19 |
+ "author" : "xcode" |
|
20 |
+ } |
|
21 |
+} |
@@ -2,6 +2,7 @@ |
||
2 | 2 |
"images" : [ |
3 | 3 |
{ |
4 | 4 |
"idiom" : "universal", |
5 |
+ "filename" : "二维码 (1).png", |
|
5 | 6 |
"scale" : "1x" |
6 | 7 |
}, |
7 | 8 |
{ |
@@ -10,7 +11,6 @@ |
||
10 | 11 |
}, |
11 | 12 |
{ |
12 | 13 |
"idiom" : "universal", |
13 |
- "filename" : "二维码 (1).png", |
|
14 | 14 |
"scale" : "3x" |
15 | 15 |
} |
16 | 16 |
], |
@@ -10,7 +10,7 @@ |
||
10 | 10 |
}, |
11 | 11 |
{ |
12 | 12 |
"idiom" : "universal", |
13 |
- "filename" : "Logo@3x.png", |
|
13 |
+ "filename" : "二维码 (2).png", |
|
14 | 14 |
"scale" : "3x" |
15 | 15 |
} |
16 | 16 |
], |
@@ -0,0 +1,6 @@ |
||
1 |
+{ |
|
2 |
+ "info" : { |
|
3 |
+ "version" : 1, |
|
4 |
+ "author" : "xcode" |
|
5 |
+ } |
|
6 |
+} |
@@ -1,21 +0,0 @@ |
||
1 |
-{ |
|
2 |
- "images" : [ |
|
3 |
- { |
|
4 |
- "idiom" : "universal", |
|
5 |
- "filename" : "1401793178925.png", |
|
6 |
- "scale" : "1x" |
|
7 |
- }, |
|
8 |
- { |
|
9 |
- "idiom" : "universal", |
|
10 |
- "scale" : "2x" |
|
11 |
- }, |
|
12 |
- { |
|
13 |
- "idiom" : "universal", |
|
14 |
- "scale" : "3x" |
|
15 |
- } |
|
16 |
- ], |
|
17 |
- "info" : { |
|
18 |
- "version" : 1, |
|
19 |
- "author" : "xcode" |
|
20 |
- } |
|
21 |
-} |
@@ -1,103 +0,0 @@ |
||
1 |
-// |
|
2 |
-// DetailModel.swift |
|
3 |
-// PaiAi |
|
4 |
-// |
|
5 |
-// Created by zhengjianfei on 16/4/8. |
|
6 |
-// Copyright © 2016年 FFIB. All rights reserved. |
|
7 |
-// |
|
8 |
- |
|
9 |
-import Foundation |
|
10 |
-import ObjectMapper |
|
11 |
-public struct thumbupUserModel { |
|
12 |
- |
|
13 |
- public var avatar = "" |
|
14 |
- public var user_id = "" |
|
15 |
- public var nickname = "" |
|
16 |
- |
|
17 |
-} |
|
18 |
- |
|
19 |
-//extension thumbupUserModel: Mappable { |
|
20 |
-// mutating public func mapping(map: Map) { |
|
21 |
-// |
|
22 |
-// } |
|
23 |
-// |
|
24 |
-// public init(map: Map) { |
|
25 |
-// avatar <- (map["avatar"]) |
|
26 |
-// user_id <- map["user_id"] |
|
27 |
-// nickname <- map["nickname"] |
|
28 |
-// } |
|
29 |
-//} |
|
30 |
-// |
|
31 |
-//extension thumbupUserModel: GroupParsable { |
|
32 |
-// public static func parse(datas: [String: AnyObject]) -> [thumbupUserModel] { |
|
33 |
-// guard let status = datas["status"] as? Int, |
|
34 |
-// let items = datas["data"] as? [String: AnyObject], |
|
35 |
-// let thumbupsInfo = items["thumbups"] as? [[String: AnyObject]], |
|
36 |
-// status == 200 else { |
|
37 |
-// return [] |
|
38 |
-// } |
|
39 |
-// return thumbupsInfo.compactMap { thumbupUserModel(map: Map(mappingType: .fromJSON, JSON: $0)) } |
|
40 |
-// } |
|
41 |
-//} |
|
42 |
-// |
|
43 |
-//struct thumbupUserNetworkRequest: NetworkRequest { |
|
44 |
-// |
|
45 |
-// typealias NetworkResponse = thumbupUserModel |
|
46 |
-// |
|
47 |
-// var path: Interfaces { get { return .thumbupList } set {} } |
|
48 |
-// var parameter: [String: AnyObject]? |
|
49 |
-// |
|
50 |
-//} |
|
51 |
- |
|
52 |
-//public struct CommentModel { |
|
53 |
-// |
|
54 |
-// public var avatar = "" |
|
55 |
-// public var comment = "" |
|
56 |
-// public var user_id = "" |
|
57 |
-// public var nickname = "" |
|
58 |
-// public var create_at = Date() |
|
59 |
-// public var cellHeigth: CGFloat = 0.0 |
|
60 |
-// |
|
61 |
-//} |
|
62 |
-// |
|
63 |
-//extension CommentModel: GroupParsable { |
|
64 |
-// public static func parse(datas: [String: AnyObject]) -> [CommentModel] { |
|
65 |
-// guard let status = datas["status"] as? Int, |
|
66 |
-// let items = datas["data"] as? [String: AnyObject], |
|
67 |
-// let commentsInfo = items["comments"] as? [[String: AnyObject]], |
|
68 |
-// status == 200 else { |
|
69 |
-// return [] |
|
70 |
-// } |
|
71 |
-// return commentsInfo.compactMap { CommentModel(map: Map(mappingType: .fromJSON, JSON: $0)) } |
|
72 |
-// } |
|
73 |
-//} |
|
74 |
-// |
|
75 |
-//extension CommentModel: Mappable { |
|
76 |
-// mutating public func mapping(map: Map) { |
|
77 |
-// |
|
78 |
-// } |
|
79 |
-// |
|
80 |
-// |
|
81 |
-// public init(map: Map) { |
|
82 |
-// let dateFormatter = DateFormatter() |
|
83 |
-// dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" |
|
84 |
-// create_at <- (map["created_at"], DateFormatterTransform(dateFormatter:dateFormatter)) |
|
85 |
-// avatar <- (map["avatar"]) |
|
86 |
-// comment <- map["comment"] |
|
87 |
-// user_id <- map["user_id"] |
|
88 |
-// nickname <- (map["nickname"]) |
|
89 |
-// comment <- map["comment"] |
|
90 |
-// |
|
91 |
-// let text = NSString(string: comment) |
|
92 |
-//// cellHeigth = text.boundingRect(with:CGSize(width: kScreenWidth - 82, height: CGFloat.greatestFiniteMagnitude), options: [.usesLineFragmentOrigin, .usesFontLeading], attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 12)], context: nil).height |
|
93 |
-// } |
|
94 |
-//} |
|
95 |
-// |
|
96 |
-//struct CommentNetworkRequest: NetworkRequest { |
|
97 |
-// |
|
98 |
-// typealias NetworkResponse = CommentModel |
|
99 |
-// |
|
100 |
-// var path: Interfaces { get { return .commentList } set {} } |
|
101 |
-// var parameter: [String: AnyObject]? |
|
102 |
-// |
|
103 |
-//} |
@@ -1,106 +0,0 @@ |
||
1 |
-// |
|
2 |
-// GroupDetailModel.swift |
|
3 |
-// PaiAi |
|
4 |
-// |
|
5 |
-// Created by zhengjianfei on 16/4/5. |
|
6 |
-// Copyright © 2016年 FFIB. All rights reserved. |
|
7 |
-// |
|
8 |
- |
|
9 |
-import Foundation |
|
10 |
-import ObjectMapper |
|
11 |
-//public struct GroupDetailModel { |
|
12 |
-// |
|
13 |
-// public var users: GroupUserInfoModel? |
|
14 |
-// public var group_id: String = "" |
|
15 |
-// var group: GroupItem? |
|
16 |
-// |
|
17 |
-// init() {} |
|
18 |
-//} |
|
19 |
-// |
|
20 |
-//extension GroupDetailModel: Mappable { |
|
21 |
-// mutating public func mapping(map: Map) { |
|
22 |
-// |
|
23 |
-// } |
|
24 |
-// |
|
25 |
-// |
|
26 |
-// public init(map: Map) { |
|
27 |
-// group_id <- map["group_id"] |
|
28 |
-// guard let group = map.JSON["group"] as? [String: AnyObject], let users = map.JSON["users"] as? [String: AnyObject] else { |
|
29 |
-// return |
|
30 |
-// } |
|
31 |
-//// self.group = GroupModel(map: Map(mappingType: .fromJSON, JSON: group)) |
|
32 |
-// self.users = GroupUserInfoModel(map: Map(mappingType: .fromJSON, JSON: users)) |
|
33 |
-// } |
|
34 |
-//} |
|
35 |
-// |
|
36 |
-//extension GroupDetailModel: SingleParsable { |
|
37 |
-// |
|
38 |
-// public static func parse(data: [String: AnyObject]) -> GroupDetailModel { |
|
39 |
-// guard let status = data["status"] as? Int, |
|
40 |
-// let res = data["data"] as? [String: AnyObject], |
|
41 |
-// status == 200 else { |
|
42 |
-// return GroupDetailModel() |
|
43 |
-// } |
|
44 |
-// return GroupDetailModel(map: Map(mappingType: .fromJSON, JSON: res)) |
|
45 |
-// } |
|
46 |
-//} |
|
47 |
-// |
|
48 |
-//public struct GroupUserInfoModel { |
|
49 |
-// public var passed_count: Int = 0 |
|
50 |
-// public var passed = [UserModel]() |
|
51 |
-// public var applying_count: Int = 0 |
|
52 |
-// public var applying = [UserModel]() |
|
53 |
-// |
|
54 |
-// init() {} |
|
55 |
-//} |
|
56 |
-// |
|
57 |
-//extension GroupUserInfoModel: SingleParsable { |
|
58 |
-// |
|
59 |
-// public static func parse(data: [String: AnyObject]) -> GroupUserInfoModel { |
|
60 |
-// return GroupUserInfoModel(map:Map(mappingType: MappingType.fromJSON, JSON: data)) |
|
61 |
-// } |
|
62 |
-//} |
|
63 |
-// |
|
64 |
-//extension GroupUserInfoModel: Mappable { |
|
65 |
-// mutating public func mapping(map: Map) { |
|
66 |
-// |
|
67 |
-// } |
|
68 |
-// |
|
69 |
-// |
|
70 |
-// public init(map: Map) { |
|
71 |
-// passed_count <- map["passed_count"] |
|
72 |
-// applying_count <- map["applying_count"] |
|
73 |
-// guard let passes = map.JSON["passed"] as? [[String: AnyObject]] else { |
|
74 |
-// return |
|
75 |
-// } |
|
76 |
-// passed = passes.compactMap { UserModel.init(map: Map.init(mappingType: .fromJSON, JSON: $0))} |
|
77 |
-// } |
|
78 |
-// |
|
79 |
-//} |
|
80 |
-// |
|
81 |
-////public struct UserModel { |
|
82 |
-//// |
|
83 |
-//// public var user_id: String = "" |
|
84 |
-//// public var avatar: String = "" |
|
85 |
-//// public var nickname: String = "" |
|
86 |
-//// public var admin: Bool = false |
|
87 |
-//// |
|
88 |
-////} |
|
89 |
-//// |
|
90 |
-////extension UserModel: Mappable { |
|
91 |
-//// |
|
92 |
-////} |
|
93 |
-//// |
|
94 |
-////struct GroupDetailNetworkQequest: NetworkRequest { |
|
95 |
-//// |
|
96 |
-//// typealias NetworkResponse = GroupDetailModel |
|
97 |
-//// |
|
98 |
-//// var path: Interfaces { get { return .groupDetail } set { } } |
|
99 |
-//// var parameter: [String: AnyObject]? |
|
100 |
-//// |
|
101 |
-//// init(param: [String: AnyObject]?, path: Interfaces = .groupDetail) { |
|
102 |
-//// self.parameter = param |
|
103 |
-//// self.path = path |
|
104 |
-//// } |
|
105 |
-//// |
|
106 |
-////} |
@@ -1,5 +1,5 @@ |
||
1 | 1 |
// |
2 |
-// CommentItem.swift |
|
2 |
+// PhotoCommentItem.swift |
|
3 | 3 |
// PaiaiDataKit |
4 | 4 |
// |
5 | 5 |
// Created by ffib on 2018/12/25. |
@@ -9,7 +9,7 @@ |
||
9 | 9 |
import Foundation |
10 | 10 |
import ObjectMapper |
11 | 11 |
|
12 |
-public struct CommentItem { |
|
12 |
+public struct PhotoCommentItem { |
|
13 | 13 |
|
14 | 14 |
public var avatar: String = "" |
15 | 15 |
public var comment: String = "" |
@@ -21,7 +21,7 @@ public struct CommentItem { |
||
21 | 21 |
self.init(map: Map(mappingType: .fromJSON, JSON: json)) |
22 | 22 |
} |
23 | 23 |
} |
24 |
-extension CommentItem: Mappable { |
|
24 |
+extension PhotoCommentItem: Mappable { |
|
25 | 25 |
mutating public func mapping(map: Map) { |
26 | 26 |
let dateFormatter = DateFormatter() |
27 | 27 |
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" |
@@ -1,5 +1,5 @@ |
||
1 | 1 |
// |
2 |
-// NetWorkData.swift |
|
2 |
+// NetworkArrayData.swift |
|
3 | 3 |
// PaiaiDataKit |
4 | 4 |
// |
5 | 5 |
// Created by ffib on 2019/1/3. |
@@ -0,0 +1,9 @@ |
||
1 |
+// |
|
2 |
+// OriginData.swift |
|
3 |
+// PaiaiDataKit |
|
4 |
+// |
|
5 |
+// Created by ffib on 2019/3/20. |
|
6 |
+// Copyright © 2019 yb. All rights reserved. |
|
7 |
+// |
|
8 |
+ |
|
9 |
+import Foundation |
@@ -0,0 +1,38 @@ |
||
1 |
+// |
|
2 |
+// PhotoDetailRepository.swift |
|
3 |
+// PaiaiDataKit |
|
4 |
+// |
|
5 |
+// Created by ffib on 2018/12/25. |
|
6 |
+// Copyright © 2018 yb. All rights reserved. |
|
7 |
+// |
|
8 |
+ |
|
9 |
+import Foundation |
|
10 |
+import RxSwift |
|
11 |
+ |
|
12 |
+ struct PhotoDetailRepository { |
|
13 |
+ var photoDetailRemoteAPI: PhotoDetailRemoteAPI |
|
14 |
+ |
|
15 |
+ init(photoId: String, groupId: String) { |
|
16 |
+ photoDetailRemoteAPI = PhotoDetailRemoteAPI(photoId: photoId, groupId: groupId) |
|
17 |
+ } |
|
18 |
+ |
|
19 |
+ func loadComments() -> Single<[PhotoCommentItem]> { |
|
20 |
+ return photoDetailRemoteAPI.loadComments() |
|
21 |
+ } |
|
22 |
+ |
|
23 |
+ func loadThumbups() -> Single<[PhotoThumbupUserItem]> { |
|
24 |
+ return photoDetailRemoteAPI.loadThumbups() |
|
25 |
+ } |
|
26 |
+ |
|
27 |
+ func submitComment(text: String) -> Single<[PhotoCommentItem]> { |
|
28 |
+ return photoDetailRemoteAPI.submitComment(text: text) |
|
29 |
+ } |
|
30 |
+ |
|
31 |
+ func submitThumbup() -> Single<[PhotoThumbupUserItem]> { |
|
32 |
+ return photoDetailRemoteAPI.submitThumbup() |
|
33 |
+ } |
|
34 |
+ |
|
35 |
+ func cancelThumbup() { |
|
36 |
+ photoDetailRemoteAPI.cancelThumbup() |
|
37 |
+ } |
|
38 |
+} |
@@ -1,75 +0,0 @@ |
||
1 |
-// |
|
2 |
-// MessageListRepository.swift |
|
3 |
-// PaiAi |
|
4 |
-// |
|
5 |
-// Created by zhengjianfei on 16/4/7. |
|
6 |
-// Copyright © 2016年 FFIB. All rights reserved. |
|
7 |
-// |
|
8 |
- |
|
9 |
-import Foundation |
|
10 |
-import RxSwift |
|
11 |
- |
|
12 |
-public protocol MessageInteractionModel { |
|
13 |
- var path: Interfaces { get } |
|
14 |
- var removePath: Interfaces { get } |
|
15 |
- var readPath: Interfaces { get } |
|
16 |
- var title: String { get } |
|
17 |
-} |
|
18 |
- |
|
19 |
-extension MessageType { |
|
20 |
- |
|
21 |
- public var model: MessageInteractionModel { |
|
22 |
- switch self { |
|
23 |
- case .thumbup: return MessagethumbupInteractionModel() |
|
24 |
- case .comment: return MessageCommentInteractionModel() |
|
25 |
- case .system: return MessageSystemInteractionModel() |
|
26 |
- } |
|
27 |
- } |
|
28 |
- |
|
29 |
- fileprivate struct MessagethumbupInteractionModel: MessageInteractionModel { |
|
30 |
- var path: Interfaces { return .mesThumbupList} |
|
31 |
- var removePath: Interfaces { return .mesThumbupClear } |
|
32 |
- var readPath: Interfaces { return .mesThumbupRead } |
|
33 |
- var title: String { return "赞" } |
|
34 |
- } |
|
35 |
- |
|
36 |
- fileprivate struct MessageCommentInteractionModel: MessageInteractionModel { |
|
37 |
- var path: Interfaces { return .mesCommentList} |
|
38 |
- var removePath: Interfaces { return .mesCommentClear } |
|
39 |
- var readPath: Interfaces { return .mesCommentRead } |
|
40 |
- var title: String { return "评论" } |
|
41 |
- } |
|
42 |
- |
|
43 |
- fileprivate struct MessageSystemInteractionModel: MessageInteractionModel { |
|
44 |
- var path: Interfaces { return .mesSystemList} |
|
45 |
- var removePath: Interfaces { return .mesSystemClear } |
|
46 |
- var readPath: Interfaces { return .mesSystemRead } |
|
47 |
- var title: String { return "系统消息" } |
|
48 |
- } |
|
49 |
-} |
|
50 |
- |
|
51 |
- |
|
52 |
- |
|
53 |
-struct MessageListRepository { |
|
54 |
- var messageListRemotAPI: MessageListRemoteAPI |
|
55 |
- |
|
56 |
- init(type: MessageType) { |
|
57 |
- messageListRemotAPI = MessageListRemoteAPI(type: type) |
|
58 |
- } |
|
59 |
- |
|
60 |
- func load(page: Int) -> Single<NetworkArrayData<MessageListItem>> { |
|
61 |
- return messageListRemotAPI.loadContent(page: page) |
|
62 |
- } |
|
63 |
- |
|
64 |
- func remove(pk: Int) -> Completable { |
|
65 |
- return messageListRemotAPI.remove(pk: pk) |
|
66 |
- } |
|
67 |
- |
|
68 |
- func removeAll() -> Completable { |
|
69 |
- return messageListRemotAPI.removeAll() |
|
70 |
- } |
|
71 |
- |
|
72 |
- func readed() -> Completable { |
|
73 |
- return messageListRemotAPI.readed() |
|
74 |
- } |
|
75 |
-} |
@@ -1,91 +0,0 @@ |
||
1 |
-// |
|
2 |
-// PhotoLocalStorage.swift |
|
3 |
-// PaiAi |
|
4 |
-// |
|
5 |
-// Created by LISA on 2017/4/19. |
|
6 |
-// Copyright © 2017年 yb. All rights reserved. |
|
7 |
-// |
|
8 |
- |
|
9 |
-import UIKit |
|
10 |
-//import ObjectMapper |
|
11 |
-//import SQLite |
|
12 |
-// |
|
13 |
-//public struct PhotoLocalStorage { |
|
14 |
-// |
|
15 |
-// let photoId = Expression<String>("photoId") |
|
16 |
-// let photoInfo = Expression<Data>("photoInfo") |
|
17 |
-// let creatAt = Expression<TimeInterval>("creatAt") |
|
18 |
-// |
|
19 |
-// static let instance = PhotoLocalStorage() |
|
20 |
-// var db: Connection? |
|
21 |
-// |
|
22 |
-// init() { |
|
23 |
-// db = try? Connection(path) |
|
24 |
-// } |
|
25 |
-// |
|
26 |
-// private let path: String = { |
|
27 |
-// let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first ?? "" |
|
28 |
-// let finalPath = path.appending("/group_photo.db") |
|
29 |
-//// printLog(finalPath) |
|
30 |
-// return finalPath |
|
31 |
-// }() |
|
32 |
-// |
|
33 |
-// func query(group_id: String) -> [PhotoItem]? { |
|
34 |
-//// let table = Table(group_id.digestString(algorithm: .md5)) |
|
35 |
-//// do { |
|
36 |
-//// guard let photos = try db?.prepare(table) else { |
|
37 |
-//// return nil |
|
38 |
-//// } |
|
39 |
-//// return photos.compactMap({ (photo) -> PhotoItem? in |
|
40 |
-//// let data = photo[photoInfo] |
|
41 |
-//// guard let dict = NSKeyedUnarchiver.unarchiveObject(with: data) as? [String: AnyObject] else { |
|
42 |
-//// return nil |
|
43 |
-//// } |
|
44 |
-//// return PhotoItem(data: dict) |
|
45 |
-//// }) |
|
46 |
-//// } catch { |
|
47 |
-//// return nil |
|
48 |
-//// } |
|
49 |
-// return nil |
|
50 |
-// } |
|
51 |
-// |
|
52 |
-// func saveDataToLocal(models: [PhotoItem], group_id: String) { |
|
53 |
-//// let table = Table(group_id.digestString(algorithm: .md5)) |
|
54 |
-//// do { |
|
55 |
-//// try db?.transaction { |
|
56 |
-//// try db?.run(table.create(ifNotExists: true, block: { (table) in |
|
57 |
-//// table.column(photoId, unique: true) |
|
58 |
-//// table.column(photoInfo) |
|
59 |
-//// table.column(creatAt) |
|
60 |
-//// })) |
|
61 |
-//// |
|
62 |
-//// for model in models { |
|
63 |
-//// let data = NSKeyedArchiver.archivedData(withRootObject: model.toJSON()) |
|
64 |
-//// let insert = table.insert(or: .replace, |
|
65 |
-//// photoInfo <- data, |
|
66 |
-//// creatAt <- (model.create_at.timeIntervalSince1970) , |
|
67 |
-//// photoId <- model.photo_id) |
|
68 |
-//// _ = try db?.run(insert) |
|
69 |
-//// } |
|
70 |
-//// |
|
71 |
-//// } |
|
72 |
-//// } catch { |
|
73 |
-//// } |
|
74 |
-// } |
|
75 |
-// |
|
76 |
-// func updateLocalData(PhotoItem: PhotoItem) { |
|
77 |
-//// let table = Table(PhotoItem.group_id.digestString(algorithm: .md5)).filter(photoId == PhotoItem.photo_id) |
|
78 |
-//// let photoData = NSKeyedArchiver.archivedData(withRootObject: PhotoItem.toJSON()) |
|
79 |
-//// do { |
|
80 |
-//// try db?.run(table.update(photoInfo <- photoData)) |
|
81 |
-//// } catch { |
|
82 |
-//// |
|
83 |
-//// } |
|
84 |
-// } |
|
85 |
-// |
|
86 |
-// func removeLocalData(group_id: String) { |
|
87 |
-//// removeGroupInfoRecent(groupId: group_id) |
|
88 |
-//// let table = Table(group_id.digestString(algorithm: .md5)) |
|
89 |
-//// _ = table.drop(ifExists: true) |
|
90 |
-// } |
|
91 |
-//} |
@@ -1,17 +0,0 @@ |
||
1 |
-// |
|
2 |
-// PhotoDetailRepository.swift |
|
3 |
-// PaiaiDataKit |
|
4 |
-// |
|
5 |
-// Created by ffib on 2018/12/25. |
|
6 |
-// Copyright © 2018 yb. All rights reserved. |
|
7 |
-// |
|
8 |
- |
|
9 |
-import Foundation |
|
10 |
- |
|
11 |
-struct PhotoDetailRepository { |
|
12 |
-// func loadComment() -> Single<Result<CommentItem>> |
|
13 |
-// func loadThumbup() -> Single<Result<ThumbupUserItem>> |
|
14 |
-// func submitComment() -> Single<Result<StatusModel>> |
|
15 |
-// func submitThumbup() -> Single<Result<StatusModel>> |
|
16 |
-// func cancelThumbup() -> Single<Result<StatusModel>> |
|
17 |
-} |
@@ -1,49 +0,0 @@ |
||
1 |
-// |
|
2 |
-// MessageListRemoteAPI.swift |
|
3 |
-// PaiaiDataKit |
|
4 |
-// |
|
5 |
-// Created by ffib on 2018/12/29. |
|
6 |
-// Copyright © 2018 yb. All rights reserved. |
|
7 |
-// |
|
8 |
- |
|
9 |
-import Foundation |
|
10 |
-import RxSwift |
|
11 |
- |
|
12 |
-struct MessageListRemoteAPI { |
|
13 |
- |
|
14 |
- var type: MessageType |
|
15 |
- |
|
16 |
- init(type: MessageType) { |
|
17 |
- self.type = type |
|
18 |
- } |
|
19 |
- |
|
20 |
- private func parse(_ json: JSON) -> NetworkArrayData<MessageListItem>? { |
|
21 |
- guard let data = json["data"] as? [String: AnyObject] else { return nil } |
|
22 |
- return NetworkArrayData<MessageListItem>(json: data, dataField: "messages") |
|
23 |
- } |
|
24 |
- |
|
25 |
- func loadContent(page: Int) -> Single<NetworkArrayData<MessageListItem>> { |
|
26 |
- let resource = ContentResource<NetworkArrayData<MessageListItem>>(path: type.model.path, |
|
27 |
- parameter: ["user_id": ShareUserId, "page": page], |
|
28 |
- parseJSON: parse) |
|
29 |
- return resource.loadContent() |
|
30 |
- } |
|
31 |
- |
|
32 |
- func remove(pk: Int) -> Completable { |
|
33 |
- let removeResource = StatusResource(path: type.model.removePath, |
|
34 |
- parameter: ["user_id": ShareUserId, "pk": pk]) |
|
35 |
- return removeResource.getStatus() |
|
36 |
- } |
|
37 |
- |
|
38 |
- func removeAll() -> Completable { |
|
39 |
- let removeResource = StatusResource(path: type.model.removePath, |
|
40 |
- parameter: ["user_id": ShareUserId, "all": true]) |
|
41 |
- return removeResource.getStatus() |
|
42 |
- } |
|
43 |
- |
|
44 |
- func readed() -> Completable { |
|
45 |
- let readedResource = StatusResource(path: type.model.readPath, |
|
46 |
- parameter: ["user_id": ShareUserId]) |
|
47 |
- return readedResource.getStatus() |
|
48 |
- } |
|
49 |
-} |
@@ -0,0 +1,9 @@ |
||
1 |
+// |
|
2 |
+// PhotoDetailRemoteAPI.swift |
|
3 |
+// PaiaiDataKit |
|
4 |
+// |
|
5 |
+// Created by ffib on 2019/3/18. |
|
6 |
+// Copyright © 2019 yb. All rights reserved. |
|
7 |
+// |
|
8 |
+ |
|
9 |
+import Foundation |
@@ -0,0 +1,9 @@ |
||
1 |
+// |
|
2 |
+// PhotoDetailListViewModel.swift |
|
3 |
+// PaiaiDataKit |
|
4 |
+// |
|
5 |
+// Created by ffib on 2019/3/19. |
|
6 |
+// Copyright © 2019 yb. All rights reserved. |
|
7 |
+// |
|
8 |
+ |
|
9 |
+import Foundation |
@@ -1,5 +1,5 @@ |
||
1 | 1 |
// |
2 |
-// DetailPageViewModel.swift |
|
2 |
+// PhotoDetailViewModel.swift |
|
3 | 3 |
// PaiAi |
4 | 4 |
// |
5 | 5 |
// Created by zhengjianfei on 2017/1/4. |
@@ -11,7 +11,7 @@ import ObjectMapper |
||
11 | 11 |
|
12 | 12 |
|
13 | 13 |
|
14 |
-public final class DetailPageViewModel { |
|
14 |
+public final class PhotoDetailViewModel { |
|
15 | 15 |
public lazy var currentPhoto = PhotoItem(json: [:]) |
16 | 16 |
public lazy var thumbups = [thumbupUserModel]() |
17 | 17 |
public lazy var comments = [CommentItem]() |
@@ -95,7 +95,7 @@ public final class DetailPageViewModel { |
||
95 | 95 |
} |
96 | 96 |
|
97 | 97 |
//wechat pay |
98 |
-extension DetailPageViewModel { |
|
98 |
+extension PhotoDetailViewModel { |
|
99 | 99 |
public final func handleResult(errorCode: Int, success: @escaping ((_ item: PhotoItem) -> Void)) { |
100 | 100 |
// func fetchOrderDetail() { |
101 | 101 |
// detailPageApi.post(param: ["order_id": orderId, "user_id": SharedUserInfo.userId] as [String: AnyObject], url: .orderDetail) { (result) in |
@@ -0,0 +1,9 @@ |
||
1 |
+// |
|
2 |
+// PhotoPurchaseViewModel.swift |
|
3 |
+// PaiaiDataKit |
|
4 |
+// |
|
5 |
+// Created by ffib on 2019/3/19. |
|
6 |
+// Copyright © 2019 yb. All rights reserved. |
|
7 |
+// |
|
8 |
+ |
|
9 |
+import Foundation |
@@ -0,0 +1,21 @@ |
||
1 |
+// |
|
2 |
+// GroupDetailMemeberView.swift |
|
3 |
+// Paiai_iOS |
|
4 |
+// |
|
5 |
+// Created by ffib on 2019/2/18. |
|
6 |
+// Copyright © 2019 yb. All rights reserved. |
|
7 |
+// |
|
8 |
+ |
|
9 |
+import UIKit |
|
10 |
+ |
|
11 |
+class GroupDetailMemeberView: UIView { |
|
12 |
+ |
|
13 |
+ /* |
|
14 |
+ // Only override draw() if you perform custom drawing. |
|
15 |
+ // An empty implementation adversely affects performance during animation. |
|
16 |
+ override func draw(_ rect: CGRect) { |
|
17 |
+ // Drawing code |
|
18 |
+ } |
|
19 |
+ */ |
|
20 |
+ |
|
21 |
+} |
@@ -1,48 +0,0 @@ |
||
1 |
-// |
|
2 |
-// ShowGroupQRController.swift |
|
3 |
-// PaiAi |
|
4 |
-// |
|
5 |
-// Created by zhengjianfei on 16/4/6. |
|
6 |
-// Copyright © 2016年 FFIB. All rights reserved. |
|
7 |
-// |
|
8 |
- |
|
9 |
-import UIKit |
|
10 |
-import PaiaiUIKit |
|
11 |
-import PaiaiDataKit |
|
12 |
- |
|
13 |
-final class ShowGroupQRController: UIViewController { |
|
14 |
- |
|
15 |
- // MARK: Storyboard property |
|
16 |
- @IBOutlet var groupImage: UIImageView! |
|
17 |
- @IBOutlet var groupName: UILabel! |
|
18 |
- @IBOutlet var EWM: UIImageView! |
|
19 |
- @IBOutlet weak var contentView: UIView! |
|
20 |
- |
|
21 |
- // MARK: data property |
|
22 |
-// var data: GroupModel? |
|
23 |
- |
|
24 |
- |
|
25 |
- required init?(coder aDecoder: NSCoder) { |
|
26 |
- super.init(coder: aDecoder) |
|
27 |
-// transitioningDelegate = transitioning |
|
28 |
- } |
|
29 |
- |
|
30 |
- // MARK: view function |
|
31 |
- override func viewDidLoad() { |
|
32 |
- super.viewDidLoad() |
|
33 |
- configureInterface() |
|
34 |
- } |
|
35 |
- |
|
36 |
- func configureInterface() { |
|
37 |
-// guard let info = data else { |
|
38 |
-// return |
|
39 |
-// } |
|
40 |
-// groupImage.setImageWithNullableURL(info.group_avatar, placeholderImage: UIImage(named: "Group\(info.group_default_avatar)")) |
|
41 |
-// groupName.text = info.group_name |
|
42 |
-// let image = UIImage.init(qr: "http://xfoto.com.cn/g/" + info.group_id, size: nil) |
|
43 |
-// EWM.image = image |
|
44 |
- } |
|
45 |
-// override func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { |
|
46 |
-// return true |
|
47 |
-// } |
|
48 |
-} |
@@ -1,40 +0,0 @@ |
||
1 |
-// |
|
2 |
-// DetailPageHeadCell.swift |
|
3 |
-// PaiAi |
|
4 |
-// |
|
5 |
-// Created by zhengjianfei on 16/4/6. |
|
6 |
-// Copyright © 2016年 FFIB. All rights reserved. |
|
7 |
-// |
|
8 |
- |
|
9 |
-import UIKit |
|
10 |
-import PaiaiDataKit |
|
11 |
-import PaiaiUIKit |
|
12 |
- |
|
13 |
-class DetailPageHeadCell: UITableViewCell { |
|
14 |
- |
|
15 |
- @IBOutlet weak var enterView: UIView! |
|
16 |
- // MARK: Storyboard property |
|
17 |
- @IBOutlet var groupImage: UIImageView! |
|
18 |
- @IBOutlet var groupName: UILabel! |
|
19 |
- weak var delegate: CellDelegate? |
|
20 |
- // MARK: view function |
|
21 |
- override func awakeFromNib() { |
|
22 |
- super.awakeFromNib() |
|
23 |
- } |
|
24 |
- |
|
25 |
- override func setSelected(_ selected: Bool, animated: Bool) { |
|
26 |
- super.setSelected(selected, animated: animated) |
|
27 |
- } |
|
28 |
- |
|
29 |
- // MARK: init interface |
|
30 |
- func setInfo(_ info: PhotoItem) { |
|
31 |
-// groupImage.setImageWithNullableURL(info.group_avatar, placeholderImage: UIImage(named: "Group\(info.group_default_avatar)")) |
|
32 |
- groupName.text = info.group_name |
|
33 |
- } |
|
34 |
- |
|
35 |
- // MARK: Storyboard button function |
|
36 |
- @IBAction func enterGroup() { |
|
37 |
- delegate?.pushNext() |
|
38 |
- } |
|
39 |
- |
|
40 |
-} |
@@ -1,35 +0,0 @@ |
||
1 |
-// |
|
2 |
-// DetailPageNameCell.swift |
|
3 |
-// PaiAi |
|
4 |
-// |
|
5 |
-// Created by zhengjianfei on 16/4/6. |
|
6 |
-// Copyright © 2016年 FFIB. All rights reserved. |
|
7 |
-// |
|
8 |
- |
|
9 |
-import UIKit |
|
10 |
-import PaiaiDataKit |
|
11 |
-import PaiaiUIKit |
|
12 |
- |
|
13 |
-class DetailPageNameCell: UITableViewCell { |
|
14 |
- |
|
15 |
- // MARK: Storyboard property |
|
16 |
- @IBOutlet var personName: UILabel! |
|
17 |
- @IBOutlet var personImage: UIImageView! |
|
18 |
- @IBOutlet var time: UILabel! |
|
19 |
- |
|
20 |
- // MARK: view function |
|
21 |
- override func awakeFromNib() { |
|
22 |
- super.awakeFromNib() |
|
23 |
- } |
|
24 |
- |
|
25 |
- override func setSelected(_ selected: Bool, animated: Bool) { |
|
26 |
- super.setSelected(selected, animated: animated) |
|
27 |
- } |
|
28 |
- |
|
29 |
- // MARK: init interface |
|
30 |
- func setInfo(_ info: PhotoItem) { |
|
31 |
- personName.text = info.nickname |
|
32 |
-// personImage.setImageWithNullableURL(info.avatar, placeholderImage: defaultAvatar) |
|
33 |
-// time.text = info.create_at.getTimeInfoFromDate() |
|
34 |
- } |
|
35 |
-} |
@@ -1,85 +0,0 @@ |
||
1 |
-// |
|
2 |
-// DetailPagePhotoCell.swift |
|
3 |
-// PaiAi |
|
4 |
-// |
|
5 |
-// Created by mac on 2016/11/2. |
|
6 |
-// Copyright © 2016年 FFIB. All rights reserved. |
|
7 |
-// |
|
8 |
- |
|
9 |
-import UIKit |
|
10 |
-import PaiaiDataKit |
|
11 |
-import PaiaiUIKit |
|
12 |
- |
|
13 |
-protocol CellDelegate: class { |
|
14 |
- func returnCurrentIndex(index: Int) |
|
15 |
- func selectIndex(indexpath: IndexPath) |
|
16 |
- func pushNext() |
|
17 |
-} |
|
18 |
-extension CellDelegate { |
|
19 |
- func returnCurrentIndex(index: Int) {} |
|
20 |
- func selectIndex(indexpath: IndexPath) {} |
|
21 |
- func pushNext() {} |
|
22 |
-} |
|
23 |
- |
|
24 |
-class DetailPagePhotoCell: UITableViewCell { |
|
25 |
- |
|
26 |
- // MARK: Storyboard property |
|
27 |
- @IBOutlet weak var collectionView: UICollectionView! |
|
28 |
- |
|
29 |
- // MARK: delete property |
|
30 |
- weak var delegate: CellDelegate? |
|
31 |
- |
|
32 |
- // MARK: parameter property |
|
33 |
- lazy var first = true |
|
34 |
- lazy var datas = [PhotoItem]() |
|
35 |
- lazy var currentPhotoIndex = 0 |
|
36 |
-} |
|
37 |
- |
|
38 |
-extension DetailPagePhotoCell: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout { |
|
39 |
- |
|
40 |
- func numberOfSections(in collectionView: UICollectionView) -> Int { |
|
41 |
- return 1 |
|
42 |
- } |
|
43 |
- |
|
44 |
- func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { |
|
45 |
- return datas.count |
|
46 |
- } |
|
47 |
- |
|
48 |
- func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { |
|
49 |
- let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "photoDetailCell", for: indexPath) |
|
50 |
- guard let imageView = cell.viewWithTag(1010) as? UIImageView else { |
|
51 |
- return cell |
|
52 |
- } |
|
53 |
- var imageStr = "" |
|
54 |
- if !datas[indexPath.row].murl.isEmpty { |
|
55 |
- imageStr = datas[indexPath.row].murl |
|
56 |
- } else if !datas[indexPath.row].rurl.isEmpty { |
|
57 |
- imageStr = datas[indexPath.row].rurl |
|
58 |
- } else { |
|
59 |
- imageStr = datas[indexPath.row].photo_thumbnail2_url |
|
60 |
- } |
|
61 |
-// imageView.setImageWithNullableURL(imageStr, placeholderImage: UIImage(named: "详情页占位图")) |
|
62 |
- return cell |
|
63 |
- } |
|
64 |
- |
|
65 |
- func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { |
|
66 |
- delegate?.selectIndex(indexpath: indexPath) |
|
67 |
- } |
|
68 |
- |
|
69 |
- func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) { |
|
70 |
- delegate?.returnCurrentIndex(index: indexPath.row) |
|
71 |
- guard first else { |
|
72 |
- return |
|
73 |
- } |
|
74 |
- collectionView.scrollToItem(at: IndexPath(row: currentPhotoIndex, section: 0), at: .left, animated: false) |
|
75 |
- first = false |
|
76 |
- } |
|
77 |
- |
|
78 |
- func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { |
|
79 |
- return CGSize(width: kScreenWidth, height: 359) |
|
80 |
- } |
|
81 |
- |
|
82 |
- |
|
83 |
- |
|
84 |
- |
|
85 |
-} |
@@ -1,33 +0,0 @@ |
||
1 |
-// |
|
2 |
-// DetailthumbupImagesCell.swift |
|
3 |
-// PaiAi |
|
4 |
-// |
|
5 |
-// Created by zhengjianfei on 16/4/7. |
|
6 |
-// Copyright © 2016年 FFIB. All rights reserved. |
|
7 |
-// |
|
8 |
- |
|
9 |
-import UIKit |
|
10 |
-import PaiaiDataKit |
|
11 |
-import PaiaiUIKit |
|
12 |
- |
|
13 |
-class DetailthumbupImagesCell: UITableViewCell { |
|
14 |
- |
|
15 |
- // MARK: Storyboard property |
|
16 |
- @IBOutlet var imagesScrollView: UIScrollView! |
|
17 |
- |
|
18 |
- // MARK: view function |
|
19 |
- override func awakeFromNib() { |
|
20 |
- super.awakeFromNib() |
|
21 |
- } |
|
22 |
- |
|
23 |
- override func setSelected(_ selected: Bool, animated: Bool) { |
|
24 |
- super.setSelected(selected, animated: animated) |
|
25 |
- } |
|
26 |
- |
|
27 |
- // MARK: init interface |
|
28 |
- func setInfo(content: [String]) { |
|
29 |
-// imagesScrollView.buildImageViews(content, width: 28, height: 28, spacing: 10, topSpcing: 0, block: {_ in |
|
30 |
-// |
|
31 |
-// }) |
|
32 |
- } |
|
33 |
-} |
@@ -1,10 +1,6 @@ |
||
1 | 1 |
<?xml version="1.0" encoding="UTF-8"?> |
2 | 2 |
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="qsT-Pc-Bhh"> |
3 |
- <device id="retina4_7" orientation="portrait"> |
|
4 |
- <adaptation id="fullscreen"/> |
|
5 |
- </device> |
|
6 | 3 |
<dependencies> |
7 |
- <deployment identifier="iOS"/> |
|
8 | 4 |
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/> |
9 | 5 |
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
10 | 6 |
</dependencies> |
@@ -85,10 +81,10 @@ |
||
85 | 81 |
</objects> |
86 | 82 |
<point key="canvasLocation" x="-953.60000000000002" y="1390.704647676162"/> |
87 | 83 |
</scene> |
88 |
- <!--DetailPageController--> |
|
84 |
+ <!--PhotoDetailViewController--> |
|
89 | 85 |
<scene sceneID="OIh-Ut-mfb"> |
90 | 86 |
<objects> |
91 |
- <viewController storyboardIdentifier="DetailPageController" automaticallyAdjustsScrollViewInsets="NO" id="qsT-Pc-Bhh" userLabel="DetailPageController" customClass="DetailPageController" customModule="PaiAi" sceneMemberID="viewController"> |
|
87 |
+ <viewController storyboardIdentifier="PhotoDetailViewController" automaticallyAdjustsScrollViewInsets="NO" id="qsT-Pc-Bhh" userLabel="PhotoDetailViewController" customClass="PhotoDetailViewController" customModule="PaiAi" sceneMemberID="viewController"> |
|
92 | 88 |
<layoutGuides> |
93 | 89 |
<viewControllerLayoutGuide type="top" id="aUY-hC-XIK"/> |
94 | 90 |
<viewControllerLayoutGuide type="bottom" id="9RM-c8-CL6"/> |
@@ -329,8 +325,8 @@ |
||
329 | 325 |
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
330 | 326 |
<nil key="highlightedColor"/> |
331 | 327 |
</label> |
332 |
- <imageView userInteractionEnabled="NO" tag="1008" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="列表箭头" translatesAutoresizingMaskIntoConstraints="NO" id="pC6-7A-WSm"> |
|
333 |
- <rect key="frame" x="341" y="4.5" width="24" height="36"/> |
|
328 |
+ <imageView userInteractionEnabled="NO" tag="1008" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="list-arrow" translatesAutoresizingMaskIntoConstraints="NO" id="pC6-7A-WSm"> |
|
329 |
+ <rect key="frame" x="349" y="14.5" width="16" height="16"/> |
|
334 | 330 |
</imageView> |
335 | 331 |
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon-赞" translatesAutoresizingMaskIntoConstraints="NO" id="jXa-8T-THD"> |
336 | 332 |
<rect key="frame" x="15" y="4.5" width="36" height="36"/> |
@@ -399,8 +395,8 @@ |
||
399 | 395 |
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
400 | 396 |
<nil key="highlightedColor"/> |
401 | 397 |
</label> |
402 |
- <imageView userInteractionEnabled="NO" tag="1009" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="列表箭头" translatesAutoresizingMaskIntoConstraints="NO" id="GOS-Xt-kBa"> |
|
403 |
- <rect key="frame" x="341" y="4.5" width="24" height="36"/> |
|
398 |
+ <imageView userInteractionEnabled="NO" tag="1009" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="list-arrow" translatesAutoresizingMaskIntoConstraints="NO" id="GOS-Xt-kBa"> |
|
399 |
+ <rect key="frame" x="349" y="14.5" width="16" height="16"/> |
|
404 | 400 |
</imageView> |
405 | 401 |
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon-评论" translatesAutoresizingMaskIntoConstraints="NO" id="7bL-8L-k4P"> |
406 | 402 |
<rect key="frame" x="15" y="4.5" width="36" height="36"/> |
@@ -932,11 +928,11 @@ |
||
932 | 928 |
<image name="icon-记录" width="36" height="36"/> |
933 | 929 |
<image name="icon-评论" width="36" height="36"/> |
934 | 930 |
<image name="icon-赞" width="36" height="36"/> |
931 |
+ <image name="list-arrow" width="16" height="16"/> |
|
935 | 932 |
<image name="分享-QQ" width="162" height="162"/> |
936 | 933 |
<image name="分享-微信好友" width="162" height="162"/> |
937 | 934 |
<image name="分享-微博" width="162" height="162"/> |
938 | 935 |
<image name="分享-朋友圈" width="162" height="162"/> |
939 |
- <image name="列表箭头" width="24" height="36"/> |
|
940 | 936 |
<image name="去除水印" width="8" height="144"/> |
941 | 937 |
<image name="大图模式-下载" width="96" height="96"/> |
942 | 938 |
<image name="旋转" width="96" height="96"/> |
@@ -13,10 +13,10 @@ import PaiaiUIKit |
||
13 | 13 |
class DetailCommentCell: UITableViewCell { |
14 | 14 |
|
15 | 15 |
// MARK: Storyboard property |
16 |
- @IBOutlet var headImage: UIImageView! |
|
17 |
- @IBOutlet var name: UILabel! |
|
18 |
- @IBOutlet var content: UILabel! |
|
19 |
- @IBOutlet var time: UILabel! |
|
16 |
+ @IBOutlet weak var headImage: UIImageView! |
|
17 |
+ @IBOutlet weak var name: UILabel! |
|
18 |
+ @IBOutlet weak var content: UILabel! |
|
19 |
+ @IBOutlet weak var time: UILabel! |
|
20 | 20 |
|
21 | 21 |
// MARK: view function |
22 | 22 |
override func awakeFromNib() { |
@@ -28,7 +28,7 @@ class DetailCommentCell: UITableViewCell { |
||
28 | 28 |
} |
29 | 29 |
|
30 | 30 |
// MARK: init interface |
31 |
- func setInfo(_ data: CommentItem) { |
|
31 |
+ func setInfo(_ data: PhotoCommentItem) { |
|
32 | 32 |
// headImage.setImageWithNullableURL(data.avatar, placeholderImage: defaultAvatar) |
33 | 33 |
name.text = data.nickname |
34 | 34 |
content.text = data.comment |
@@ -0,0 +1,13 @@ |
||
1 |
+// |
|
2 |
+// PhotoDetailImageCell.swift |
|
3 |
+// Paiai_iOS |
|
4 |
+// |
|
5 |
+// Created by ffib on 2019/3/19. |
|
6 |
+// Copyright © 2019 yb. All rights reserved. |
|
7 |
+// |
|
8 |
+ |
|
9 |
+import UIKit |
|
10 |
+ |
|
11 |
+class PhotoDetailImageCell: UICollectionViewCell { |
|
12 |
+ |
|
13 |
+} |
@@ -1,5 +1,5 @@ |
||
1 | 1 |
// |
2 |
-// DetailPageController.swift |
|
2 |
+// PhotoDetailViewController.swift |
|
3 | 3 |
// PaiAi |
4 | 4 |
// |
5 | 5 |
// Created by zhengjianfei on 16/4/6. |
@@ -15,42 +15,56 @@ import PaiaiUIKit |
||
15 | 15 |
let kPhotographerMark = 1 |
16 | 16 |
|
17 | 17 |
|
18 |
-final class DetailPageController: UIViewController { |
|
18 |
+final class PhotoDetailViewController: UIViewController { |
|
19 |
+ |
|
20 |
+ @IBOutlet weak var groupAvatar: UIImageView! |
|
21 |
+ @IBOutlet weak var groupName: UILabel! |
|
22 |
+ |
|
23 |
+ @IBOutlet weak var photoCollectionView: UICollectionView! |
|
24 |
+ |
|
25 |
+ @IBOutlet weak var userAvatar: UIImageView! |
|
26 |
+ @IBOutlet weak var userName: UILabel! |
|
27 |
+ @IBOutlet weak var photoTime: UILabel! |
|
28 |
+ |
|
29 |
+ @IBOutlet weak var thumbupCount: UILabel! |
|
30 |
+ @IBOutlet weak var thumbupView: UIView! |
|
31 |
+ |
|
32 |
+ @IBOutlet weak var commentCount: UILabel! |
|
33 |
+ @IBOutlet weak var tableView: UITableView! |
|
34 |
+ |
|
35 |
+ @IBOutlet weak var commentView: UIView! |
|
36 |
+ @IBOutlet weak var commentHeight: NSLayoutConstraint! |
|
37 |
+ @IBOutlet weak var commentTextField: UITextField! |
|
38 |
+ @IBOutlet weak var sendBtn: UIButton! |
|
39 |
+ |
|
40 |
+ @IBOutlet weak var buyView: UIView! |
|
41 |
+ @IBOutlet weak var waterMarkImage: UIImageView! |
|
42 |
+ @IBOutlet weak var waterMarkLabel: UILabel! |
|
19 | 43 |
|
20 |
- // MARK: Storyboard property |
|
21 |
- @IBOutlet var tableView: UITableView! |
|
22 |
- @IBOutlet var commentView: UIView! |
|
23 |
- @IBOutlet var commentHeight: NSLayoutConstraint! |
|
24 |
- @IBOutlet var commentTextField: UITextField! |
|
25 |
- @IBOutlet var sendBtn: UIButton! |
|
26 |
- @IBOutlet var thumbupView: UIView! |
|
27 |
- @IBOutlet var buyView: UIView! |
|
28 |
- @IBOutlet var shuiyinImage: UIImageView! |
|
29 |
- @IBOutlet var shuiyinLabel: UILabel! |
|
30 |
- @IBOutlet weak var waterMarkView: UIView! |
|
31 |
- |
|
32 |
- @IBOutlet weak var shuiyinImageLeadingConstarint: NSLayoutConstraint! |
|
33 | 44 |
// MARK: data property |
34 |
- var detailPageViewModel = DetailPageViewModel() |
|
45 |
+ var viewModel: PhotoDetailViewModel! |
|
35 | 46 |
lazy var datas = [PhotoItem]() |
36 | 47 |
lazy var currentPhotoIndex = 0 |
37 | 48 |
var isHiddenEnterView = false |
38 | 49 |
let disposeBag = DisposeBag() |
39 |
- static let storyboardCtl = UIStoryboard.photoDetail.instantiateInitialViewController() as! DetailPageController |
|
50 |
+ static let storyboardCtl = UIStoryboard.photoDetail.instantiateInitialViewController() as! PhotoDetailViewController |
|
40 | 51 |
|
41 | 52 |
// MARK: view function |
42 | 53 |
override func viewDidLoad() { |
43 | 54 |
super.viewDidLoad() |
44 | 55 |
// detailPageViewModel.tipDelegate = self |
45 | 56 |
// tableView.tableFooterView = UIView() |
46 |
- tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 100, right: 0) |
|
47 | 57 |
configureNotification() |
48 |
- commentTextField.addLeftPadding(7) |
|
58 |
+ |
|
49 | 59 |
commentTextField.rx.text |
50 | 60 |
.map {!($0?.isEmpty)!} |
51 | 61 |
.bind(to: sendBtn.rx.isEnabled) |
52 | 62 |
.disposed(by: disposeBag) |
53 | 63 |
} |
64 |
+ |
|
65 |
+ func setupCommentTextField() { |
|
66 |
+ commentTextField.addLeftPadding(7) |
|
67 |
+ } |
|
54 | 68 |
|
55 | 69 |
override func viewWillAppear(_ animated: Bool) { |
56 | 70 |
super.viewWillAppear(true) |
@@ -118,28 +132,28 @@ final class DetailPageController: UIViewController { |
||
118 | 132 |
currentPhotoIndex = index |
119 | 133 |
// detailPageViewModel.currentPhoto = datas[index] |
120 | 134 |
|
121 |
- detailPageViewModel.fetchThumbup(success: {[weak self] in |
|
122 |
- if let weakself = self { |
|
123 |
- var model = weakself.datas[index] |
|
124 |
- model.thumbup_num = weakself.detailPageViewModel.thumbups.count |
|
125 |
- weakself.datas[index] = model |
|
126 |
-// PhotoLocalStorage.instance.updateLocalData(PhotoItem: model) |
|
127 |
- weakself.reloadSection(inter: 3) |
|
128 |
- } |
|
129 |
- }) |
|
130 |
- detailPageViewModel.fetchComment(success: {[weak self] in |
|
131 |
- if let weakself = self { |
|
132 |
- |
|
133 |
- var model = weakself.datas[index] |
|
134 |
- model.comment_num = weakself.detailPageViewModel.comments.count |
|
135 |
- weakself.datas[index] = model |
|
136 |
-// PhotoLocalStorage.instance.updateLocalData(PhotoItem: model) |
|
137 |
- weakself.reloadSection(inter: 4) |
|
138 |
- } |
|
139 |
- }) |
|
140 |
- |
|
141 |
- reloadSection(inter: 0) |
|
142 |
- reloadSection(inter: 2) |
|
135 |
+// detailPageViewModel.fetchThumbup(success: {[weak self] in |
|
136 |
+// if let weakself = self { |
|
137 |
+// var model = weakself.datas[index] |
|
138 |
+// model.thumbup_num = weakself.detailPageViewModel.thumbups.count |
|
139 |
+// weakself.datas[index] = model |
|
140 |
+//// PhotoLocalStorage.instance.updateLocalData(PhotoItem: model) |
|
141 |
+// weakself.reloadSection(inter: 3) |
|
142 |
+// } |
|
143 |
+// }) |
|
144 |
+// detailPageViewModel.fetchComment(success: {[weak self] in |
|
145 |
+// if let weakself = self { |
|
146 |
+// |
|
147 |
+// var model = weakself.datas[index] |
|
148 |
+// model.comment_num = weakself.detailPageViewModel.comments.count |
|
149 |
+// weakself.datas[index] = model |
|
150 |
+//// PhotoLocalStorage.instance.updateLocalData(PhotoItem: model) |
|
151 |
+// weakself.reloadSection(inter: 4) |
|
152 |
+// } |
|
153 |
+// }) |
|
154 |
+ |
|
155 |
+// reloadSection(inter: 0) |
|
156 |
+// reloadSection(inter: 2) |
|
143 | 157 |
showBuyView() |
144 | 158 |
} |
145 | 159 |
|
@@ -157,36 +171,36 @@ final class DetailPageController: UIViewController { |
||
157 | 171 |
|
158 | 172 |
// MARK: Storyboard button function |
159 | 173 |
@IBAction func HDPay(_ sender: UIButton) { |
160 |
- detailPageViewModel.getHD (getPriceSuccess: { [weak self] (isExist) in |
|
161 |
- if let weakself = self { |
|
162 |
- if isExist { |
|
163 |
- let fullPicCtl = UIStoryboard(name: "Detail", bundle: nil).instantiateController(ShowFullPicController.self) |
|
164 |
- fullPicCtl.datas = [weakself.datas[weakself.currentPhotoIndex]] |
|
165 |
- fullPicCtl.showNomark = true |
|
166 |
- fullPicCtl.currentPhotoIndex = weakself.currentPhotoIndex |
|
167 |
- weakself.navigationController?.pushViewController(fullPicCtl, animated: true) |
|
168 |
- } else { |
|
169 |
- } |
|
170 |
- } |
|
171 |
- }) |
|
174 |
+// detailPageViewModel.getHD (getPriceSuccess: { [weak self] (isExist) in |
|
175 |
+// if let weakself = self { |
|
176 |
+// if isExist { |
|
177 |
+// let fullPicCtl = UIStoryboard(name: "Detail", bundle: nil).instantiateController(ShowFullPicController.self) |
|
178 |
+// fullPicCtl.datas = [weakself.datas[weakself.currentPhotoIndex]] |
|
179 |
+// fullPicCtl.showNomark = true |
|
180 |
+// fullPicCtl.currentPhotoIndex = weakself.currentPhotoIndex |
|
181 |
+// weakself.navigationController?.pushViewController(fullPicCtl, animated: true) |
|
182 |
+// } else { |
|
183 |
+// } |
|
184 |
+// } |
|
185 |
+// }) |
|
172 | 186 |
} |
173 | 187 |
|
174 | 188 |
@IBAction func waterMarkPay(_ sender: UIButton) { |
175 | 189 |
|
176 |
- detailPageViewModel.getWatermark (getPriceSuccess: { [weak self] (isExist) in |
|
177 |
- if let weakself = self { |
|
178 |
- if isExist { |
|
179 |
- let fullPicCtl = UIStoryboard(name: "Detail", bundle: nil).instantiateController(ShowFullPicController.self) |
|
180 |
- fullPicCtl.datas = weakself.datas |
|
181 |
- fullPicCtl.showNomark = true |
|
182 |
- fullPicCtl.currentPhotoIndex = weakself.currentPhotoIndex |
|
183 |
- weakself.navigationController?.pushViewController(fullPicCtl, animated: true) |
|
184 |
- } else { |
|
185 |
- weakself.shuiyinImage.isHidden = true |
|
186 |
- weakself.shuiyinLabel.text = "¥\((weakself.detailPageViewModel.watermarkPrice/100))" |
|
187 |
- } |
|
188 |
- } |
|
189 |
- }) |
|
190 |
+// detailPageViewModel.getWatermark (getPriceSuccess: { [weak self] (isExist) in |
|
191 |
+// if let weakself = self { |
|
192 |
+// if isExist { |
|
193 |
+// let fullPicCtl = UIStoryboard(name: "Detail", bundle: nil).instantiateController(ShowFullPicController.self) |
|
194 |
+// fullPicCtl.datas = weakself.datas |
|
195 |
+// fullPicCtl.showNomark = true |
|
196 |
+// fullPicCtl.currentPhotoIndex = weakself.currentPhotoIndex |
|
197 |
+// weakself.navigationController?.pushViewController(fullPicCtl, animated: true) |
|
198 |
+// } else { |
|
199 |
+// weakself.shuiyinImage.isHidden = true |
|
200 |
+// weakself.shuiyinLabel.text = "¥\((weakself.detailPageViewModel.watermarkPrice/100))" |
|
201 |
+// } |
|
202 |
+// } |
|
203 |
+// }) |
|
190 | 204 |
} |
191 | 205 |
|
192 | 206 |
@IBAction func share() { |
@@ -206,23 +220,23 @@ final class DetailPageController: UIViewController { |
||
206 | 220 |
guard let text = commentTextField.text else { |
207 | 221 |
return |
208 | 222 |
} |
209 |
- detailPageViewModel.sendComment(content: text, success: { [weak self] in |
|
210 |
- if let weakself = self { |
|
211 |
- weakself.commentTextField.text = "" |
|
212 |
- weakself.commentTextField.resignFirstResponder() |
|
213 |
- weakself.commentView.isHidden = true |
|
214 |
- weakself.refreshUI(index: weakself.currentPhotoIndex) |
|
215 |
- } |
|
216 |
- }) |
|
223 |
+// detailPageViewModel.sendComment(content: text, success: { [weak self] in |
|
224 |
+// if let weakself = self { |
|
225 |
+// weakself.commentTextField.text = "" |
|
226 |
+// weakself.commentTextField.resignFirstResponder() |
|
227 |
+// weakself.commentView.isHidden = true |
|
228 |
+// weakself.refreshUI(index: weakself.currentPhotoIndex) |
|
229 |
+// } |
|
230 |
+// }) |
|
217 | 231 |
} |
218 | 232 |
|
219 | 233 |
@IBAction func thumbup() { |
220 |
- detailPageViewModel.sendThumbup(success: {[weak self] in |
|
221 |
- if let weakself = self { |
|
222 |
- weakself.refreshUI(index: weakself.currentPhotoIndex) |
|
223 |
- } |
|
224 |
- |
|
225 |
- }) |
|
234 |
+// detailPageViewModel.sendThumbup(success: {[weak self] in |
|
235 |
+// if let weakself = self { |
|
236 |
+// weakself.refreshUI(index: weakself.currentPhotoIndex) |
|
237 |
+// } |
|
238 |
+// |
|
239 |
+// }) |
|
226 | 240 |
} |
227 | 241 |
|
228 | 242 |
// MARK: custom function |
@@ -234,19 +248,19 @@ final class DetailPageController: UIViewController { |
||
234 | 248 |
} |
235 | 249 |
|
236 | 250 |
@objc func showThumps() { |
237 |
- if detailPageViewModel.thumbupsCount > 0 { |
|
238 |
- detailPageViewModel.thumbupsCount = 0 |
|
239 |
- } else { |
|
240 |
- detailPageViewModel.thumbupsCount = detailPageViewModel.thumbups.count |
|
241 |
- } |
|
251 |
+// if detailPageViewModel.thumbupsCount > 0 { |
|
252 |
+// detailPageViewModel.thumbupsCount = 0 |
|
253 |
+// } else { |
|
254 |
+// detailPageViewModel.thumbupsCount = detailPageViewModel.thumbups.count |
|
255 |
+// } |
|
242 | 256 |
reloadSection(inter: 3) |
243 | 257 |
} |
244 | 258 |
@objc func showComments() { |
245 |
- if detailPageViewModel.commentsCount > 0 { |
|
246 |
- detailPageViewModel.commentsCount = 0 |
|
247 |
- } else { |
|
248 |
- detailPageViewModel.commentsCount = detailPageViewModel.comments.count |
|
249 |
- } |
|
259 |
+// if detailPageViewModel.commentsCount > 0 { |
|
260 |
+// detailPageViewModel.commentsCount = 0 |
|
261 |
+// } else { |
|
262 |
+// detailPageViewModel.commentsCount = detailPageViewModel.comments.count |
|
263 |
+// } |
|
250 | 264 |
reloadSection(inter: 4) |
251 | 265 |
} |
252 | 266 |
|
@@ -274,7 +288,7 @@ final class DetailPageController: UIViewController { |
||
274 | 288 |
} |
275 | 289 |
|
276 | 290 |
// MARK: custom delegate function |
277 |
-extension DetailPageController: CellDelegate { |
|
291 |
+extension PhotoDetailViewController: CellDelegate { |
|
278 | 292 |
func selectIndex(indexpath: IndexPath) { |
279 | 293 |
let ctl = UIStoryboard.photoDetail.instantiateController(ShowFullPicController.self) |
280 | 294 |
ctl.datas = datas |
@@ -295,7 +309,7 @@ extension DetailPageController: CellDelegate { |
||
295 | 309 |
} |
296 | 310 |
|
297 | 311 |
//MARK textField delegate |
298 |
-extension DetailPageController: UIGestureRecognizerDelegate { |
|
312 |
+extension PhotoDetailViewController: UIGestureRecognizerDelegate { |
|
299 | 313 |
// MARK: textField |
300 | 314 |
|
301 | 315 |
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { |
@@ -312,33 +326,33 @@ extension DetailPageController: UIGestureRecognizerDelegate { |
||
312 | 326 |
} |
313 | 327 |
|
314 | 328 |
// MARK: UITableView delegate |
315 |
-extension DetailPageController: UITableViewDataSource, UITableViewDelegate { |
|
329 |
+extension PhotoDetailViewController: UITableViewDataSource, UITableViewDelegate { |
|
316 | 330 |
|
317 | 331 |
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { |
318 | 332 |
if section == 3 { |
319 | 333 |
let cell = tableView.dequeueReusableCell(withIdentifier: "thumbupHeadCell") |
320 | 334 |
if let label = cell?.viewWithTag(1001) as? UILabel { |
321 |
- label.text = "(\(detailPageViewModel.thumbups.count))" |
|
335 |
+// label.text = "(\(detailPageViewModel.thumbups.count))" |
|
322 | 336 |
} |
323 | 337 |
if let button = cell?.viewWithTag(1011) as? UIButton { |
324 | 338 |
button.addTarget(self, action: #selector(showThumps), for: .touchUpInside) |
325 | 339 |
} |
326 | 340 |
if let imageView = cell?.viewWithTag(1008) as? UIImageView { |
327 |
- let imageName = detailPageViewModel.thumbupsCount <= 0 ? "收起" : "列表箭头" |
|
328 |
- imageView.image = UIImage(named : imageName) |
|
341 |
+// let imageName = detailPageViewModel.thumbupsCount <= 0 ? "收起" : "list-arrow" |
|
342 |
+// imageView.image = UIImage(named : imageName) |
|
329 | 343 |
} |
330 | 344 |
return cell?.contentView |
331 | 345 |
} else if section == 4 { |
332 | 346 |
let cell = tableView.dequeueReusableCell(withIdentifier: "comentHeadCell") |
333 | 347 |
if let label = cell?.viewWithTag(1002) as? UILabel { |
334 |
- label.text = "(\(detailPageViewModel.comments.count))" |
|
348 |
+// label.text = "(\(detailPageViewModel.comments.count))" |
|
335 | 349 |
} |
336 | 350 |
if let button = cell?.viewWithTag(1012) as? UIButton { |
337 | 351 |
button.addTarget(self, action: #selector(showComments), for: .touchUpInside) |
338 | 352 |
} |
339 | 353 |
if let imageView = cell?.viewWithTag(1009) as? UIImageView { |
340 |
- let imageName = detailPageViewModel.commentsCount <= 0 ? "收起" : "列表箭头" |
|
341 |
- imageView.image = UIImage(named : imageName) |
|
354 |
+// let imageName = detailPageViewModel.commentsCount <= 0 ? "收起" : "list-arrow" |
|
355 |
+// imageView.image = UIImage(named : imageName) |
|
342 | 356 |
} |
343 | 357 |
return cell?.contentView |
344 | 358 |
} |
@@ -357,11 +371,11 @@ extension DetailPageController: UITableViewDataSource, UITableViewDelegate { |
||
357 | 371 |
} |
358 | 372 |
|
359 | 373 |
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { |
360 |
- if section == 3 { |
|
361 |
- return detailPageViewModel.thumbupsCount > 0 ? 1 : 0 |
|
362 |
- } else if section == 4 { |
|
363 |
- return detailPageViewModel.commentsCount |
|
364 |
- } |
|
374 |
+// if section == 3 { |
|
375 |
+// return detailPageViewModel.thumbupsCount > 0 ? 1 : 0 |
|
376 |
+// } else if section == 4 { |
|
377 |
+// return detailPageViewModel.commentsCount |
|
378 |
+// } |
|
365 | 379 |
return 0 |
366 | 380 |
} |
367 | 381 |
|
@@ -391,14 +405,14 @@ extension DetailPageController: UITableViewDataSource, UITableViewDelegate { |
||
391 | 405 |
return cell |
392 | 406 |
} else if indexPath.section == 3 { |
393 | 407 |
let cell = tableView.dequeueReusableCell(withIdentifier: "thumbupCell", for: indexPath) as! DetailthumbupImagesCell |
394 |
- if detailPageViewModel.thumbups.count > 0 { |
|
395 |
- let headers = detailPageViewModel.thumbups.map {$0.avatar} |
|
396 |
- cell.setInfo(content: headers) |
|
397 |
- } |
|
408 |
+// if detailPageViewModel.thumbups.count > 0 { |
|
409 |
+// let headers = detailPageViewModel.thumbups.map {$0.avatar} |
|
410 |
+// cell.setInfo(content: headers) |
|
411 |
+// } |
|
398 | 412 |
return cell |
399 | 413 |
} else { |
400 | 414 |
let cell = tableView.dequeueReusableCell(withIdentifier: "comentCell", for: indexPath) as! DetailCommentCell |
401 |
- cell.setInfo(detailPageViewModel.comments[indexPath.row]) |
|
415 |
+// cell.setInfo(detailPageViewModel.comments[indexPath.row]) |
|
402 | 416 |
return cell |
403 | 417 |
} |
404 | 418 |
} |
@@ -418,3 +432,7 @@ extension DetailPageController: UITableViewDataSource, UITableViewDelegate { |
||
418 | 432 |
} |
419 | 433 |
} |
420 | 434 |
} |
435 |
+ |
|
436 |
+extension PhotoDetailViewController { |
|
437 |
+ |
|
438 |
+} |
@@ -13,7 +13,7 @@ import PaiaiUIKit |
||
13 | 13 |
final class ShowFullPicController: UIViewController { |
14 | 14 |
|
15 | 15 |
// MARK: Storyboard property |
16 |
- @IBOutlet var collectionView: UICollectionView! |
|
16 |
+ @IBOutlet weak var collectionView: UICollectionView! |
|
17 | 17 |
// @IBOutlet weak var progressView: FFProgress! |
18 | 18 |
// MARK: parameter property |
19 | 19 |
lazy var datas = [PhotoItem]() |
@@ -44,11 +44,11 @@ final class ShowFullPicController: UIViewController { |
||
44 | 44 |
// MARK: Storyboard button function |
45 | 45 |
@IBAction func back() { |
46 | 46 |
_ = navigationController?.popViewController(animated: true) |
47 |
- guard let ctl = navigationController?.viewControllers.last as? DetailPageController else { |
|
47 |
+ guard let ctl = navigationController?.viewControllers.last as? PhotoDetailViewController else { |
|
48 | 48 |
return |
49 | 49 |
} |
50 |
- ctl.currentPhotoIndex = currentPageIndex |
|
51 |
- ctl.tableView.reloadData() |
|
50 |
+// ctl.currentPhotoIndex = currentPageIndex |
|
51 |
+// ctl.tableView.reloadData() |
|
52 | 52 |
} |
53 | 53 |
@IBAction func rotateTheImage(_ sender: UIButton) { |
54 | 54 |
guard let cell = collectionView.cellForItem(at: IndexPath(item: currentPageIndex, section: 0)) as? ImageCell else { |
@@ -0,0 +1,21 @@ |
||
1 |
+// |
|
2 |
+// ShareView.swift |
|
3 |
+// Paiai_iOS |
|
4 |
+// |
|
5 |
+// Created by ffib on 2019/3/21. |
|
6 |
+// Copyright © 2019 yb. All rights reserved. |
|
7 |
+// |
|
8 |
+ |
|
9 |
+import UIKit |
|
10 |
+ |
|
11 |
+class ShareView: UIView { |
|
12 |
+ |
|
13 |
+ /* |
|
14 |
+ // Only override draw() if you perform custom drawing. |
|
15 |
+ // An empty implementation adversely affects performance during animation. |
|
16 |
+ override func draw(_ rect: CGRect) { |
|
17 |
+ // Drawing code |
|
18 |
+ } |
|
19 |
+ */ |
|
20 |
+ |
|
21 |
+} |