Commit c20e4191082cf32ec0044112b5057fc685ea463f
1 parent
3187f91b
首页导航栏
Showing
11 changed files
with
381 additions
and
218 deletions
metaCode/Classes/Common/Base/CNLiveBaseTabBarViewController.swift
| @@ -8,22 +8,44 @@ | @@ -8,22 +8,44 @@ | ||
| 8 | import Foundation | 8 | import Foundation |
| 9 | import UIKit | 9 | import UIKit |
| 10 | 10 | ||
| 11 | -class CNLiveBaseTabBarViewController:UITabBarController | 11 | +class CNTabBar:UITabBar{ |
| 12 | + | ||
| 13 | + override var frame: CGRect { | ||
| 14 | + | ||
| 15 | + willSet | ||
| 16 | + { | ||
| 17 | + | ||
| 18 | + } | ||
| 19 | + //我们需要在age属性发生变化后,更新一下nickName这个属性 | ||
| 20 | + didSet | ||
| 21 | + { | ||
| 22 | + print("frame = ", frame) | ||
| 23 | + print("完成") | ||
| 24 | + } | ||
| 25 | + } | ||
| 26 | +} | ||
| 27 | + | ||
| 28 | +class CNLiveBaseTabBarViewController: UITabBarController | ||
| 12 | { | 29 | { |
| 13 | 30 | ||
| 14 | override func viewDidLoad() { | 31 | override func viewDidLoad() { |
| 15 | super.viewDidLoad() | 32 | super.viewDidLoad() |
| 33 | + self.setValue(CNTabBar.init(), forKey: "tabBar") | ||
| 34 | + | ||
| 35 | + self.setUpTabBar() | ||
| 36 | + self.setupBackgroup() | ||
| 37 | + | ||
| 16 | } | 38 | } |
| 17 | 39 | ||
| 18 | override func viewWillAppear(_ animated: Bool) { | 40 | override func viewWillAppear(_ animated: Bool) { |
| 19 | super.viewWillAppear(animated) | 41 | super.viewWillAppear(animated) |
| 20 | - self.setUpTabBar() | ||
| 21 | - self.setupBackgroup() | 42 | + |
| 22 | 43 | ||
| 23 | } | 44 | } |
| 24 | override func viewDidAppear(_ animated: Bool) { | 45 | override func viewDidAppear(_ animated: Bool) { |
| 25 | super.viewDidAppear(animated) | 46 | super.viewDidAppear(animated) |
| 26 | 47 | ||
| 48 | + | ||
| 27 | } | 49 | } |
| 28 | // MARK: - 控制器的信息 | 50 | // MARK: - 控制器的信息 |
| 29 | func setUpTabBar() { | 51 | func setUpTabBar() { |
metaCode/Classes/Extensions/UITabBar+CNBadge.swift
| @@ -8,208 +8,208 @@ | @@ -8,208 +8,208 @@ | ||
| 8 | import Foundation | 8 | import Foundation |
| 9 | import UIKit | 9 | import UIKit |
| 10 | 10 | ||
| 11 | -extension UITabBar { | ||
| 12 | - /** | ||
| 13 | - tabbar tag | ||
| 14 | - */ | ||
| 15 | - private var badgeTag:Int! { | ||
| 16 | - get{ | ||
| 17 | - return 1000 | ||
| 18 | - } | ||
| 19 | - set{ | ||
| 20 | - | ||
| 21 | - } | ||
| 22 | - } | ||
| 23 | - | ||
| 24 | - /** | ||
| 25 | - 运行时对应的key值 | ||
| 26 | - */ | ||
| 27 | - private struct AssociatedKeys { | ||
| 28 | - static var kBadgeSize:String! = "kBadgeSize" | ||
| 29 | - static var kBadgeColor:String! = "kBadgeColor" | ||
| 30 | - static var kBadgeImage:String! = "kBadgeImage" | ||
| 31 | - static var kBadgePoint:String! = "kBadgePoint" | ||
| 32 | - static var kBadgeValue:String! = "kBadgeValue" | ||
| 33 | - } | ||
| 34 | - | ||
| 35 | - | ||
| 36 | - // 小红点size | ||
| 37 | - public var badgeSize:CGSize! { | ||
| 38 | - get{ | ||
| 39 | - return objc_getAssociatedObject(self, &AssociatedKeys.kBadgeSize) as? CGSize | ||
| 40 | - } | ||
| 41 | - set{ | ||
| 42 | - objc_setAssociatedObject(self, &AssociatedKeys.kBadgeSize, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) | ||
| 43 | - } | ||
| 44 | - } | ||
| 45 | - | ||
| 46 | - // 小红点图片 | ||
| 47 | - public var badgeImage:UIImage! { | ||
| 48 | - get{ | ||
| 49 | - return objc_getAssociatedObject(self, &AssociatedKeys.kBadgeImage) as? UIImage | ||
| 50 | - } | ||
| 51 | - set{ | ||
| 52 | - objc_setAssociatedObject(self, &AssociatedKeys.kBadgeImage, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) | ||
| 53 | - } | ||
| 54 | - } | ||
| 55 | - | ||
| 56 | - // 小红点颜色 | ||
| 57 | - public var badgeColor:UIColor! { | ||
| 58 | - get{ | ||
| 59 | - return objc_getAssociatedObject(self, &AssociatedKeys.kBadgeColor) as? UIColor | ||
| 60 | - } | ||
| 61 | - set{ | ||
| 62 | - objc_setAssociatedObject(self, &AssociatedKeys.kBadgeColor, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) | ||
| 63 | - } | ||
| 64 | - } | ||
| 65 | - | ||
| 66 | - // 小红点的x、y值 | ||
| 67 | - public var badgePoint:CGPoint! { | ||
| 68 | - get{ | ||
| 69 | - return objc_getAssociatedObject(self, &AssociatedKeys.kBadgePoint) as? CGPoint | ||
| 70 | - } | ||
| 71 | - set{ | ||
| 72 | - objc_setAssociatedObject(self, &AssociatedKeys.kBadgePoint, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) | ||
| 73 | - } | ||
| 74 | - } | ||
| 75 | - | ||
| 76 | - // 小红点的数字 | ||
| 77 | - public var badgeValue:String! { | ||
| 78 | - get{ | ||
| 79 | - return objc_getAssociatedObject(self, &AssociatedKeys.kBadgeValue) as? String | ||
| 80 | - } | ||
| 81 | - set{ | ||
| 82 | - objc_setAssociatedObject(self, &AssociatedKeys.kBadgeValue, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) | ||
| 83 | - } | ||
| 84 | - } | ||
| 85 | - | ||
| 86 | - // MARK:-显示小红点 | ||
| 87 | - public func showBadgeOnItemIndex(index:Int){ | ||
| 88 | - // 移除 | ||
| 89 | - self.removeRedPointOnIndex(index: index, animation: false) | ||
| 90 | - | ||
| 91 | - // 防止是空的 | ||
| 92 | - if self.badgeColor == nil { | ||
| 93 | - self.badgeColor = UIColor() | ||
| 94 | - self.badgeColor = UIColor.red | ||
| 95 | - } | ||
| 96 | - | ||
| 97 | - if self.badgePoint == nil { | ||
| 98 | - self.badgePoint = CGPoint() | ||
| 99 | - self.badgePoint = CGPoint.zero | ||
| 100 | - } | ||
| 101 | - | ||
| 102 | - if self.badgeSize == nil { | ||
| 103 | - self.badgeSize = CGSize.zero | ||
| 104 | - } | ||
| 105 | - | ||
| 106 | - if self.badgeImage == nil { | ||
| 107 | - self.badgeImage = UIImage() | ||
| 108 | - } | ||
| 109 | - | ||
| 110 | - if self.badgeValue == nil { | ||
| 111 | - self.badgeValue = String() | ||
| 112 | - } | ||
| 113 | - | ||
| 114 | - // 小红点背景默认值大小设置 | ||
| 115 | - if __CGSizeEqualToSize(self.badgeSize, CGSize.zero) { | ||
| 116 | - self.badgeSize = CGSize(width: 12, height: 12) | ||
| 117 | - } | ||
| 118 | - | ||
| 119 | - | ||
| 120 | - let badgeView = UIView() | ||
| 121 | - badgeView.backgroundColor = self.badgeColor | ||
| 122 | - badgeView.layer.cornerRadius = self.badgeSize.width / 2 | ||
| 123 | - badgeView.tag = badgeTag + 1 | ||
| 124 | - | ||
| 125 | - let barButtonView = self.getBarButttonViewWithIndex(index: index) | ||
| 126 | - //(图片的imageView) | ||
| 127 | - var iconView = UIView() | ||
| 128 | - for swappableImageView in barButtonView.subviews { | ||
| 129 | - | ||
| 130 | - if swappableImageView.isKind(of: UIImageView.self) { | ||
| 131 | - iconView = swappableImageView | ||
| 132 | - break | ||
| 133 | - } | ||
| 134 | - | ||
| 135 | - } | ||
| 136 | - | ||
| 137 | - // 小红点背景默认值Point设置 | ||
| 138 | - if __CGPointEqualToPoint(self.badgePoint, CGPoint.zero) { | ||
| 139 | - let iconViewSize = iconView.frame.size | ||
| 140 | - badgeView.frame = CGRect(x: iconViewSize.width - self.badgeSize.width / 2, y: -self.badgeSize.width / 2, width: self.badgeSize.width, height: self.badgeSize.height) | ||
| 141 | - }else{ | ||
| 142 | - badgeView.frame = CGRect(x: self.badgePoint.x, y: self.badgePoint.y, width: self.badgeSize.width, height: self.badgeSize.height) | ||
| 143 | - } | ||
| 144 | - | ||
| 145 | - // 添加图片到小红点上 | ||
| 146 | - let imageview = UIImageView(frame: badgeView.bounds) | ||
| 147 | - imageview.image = self.badgeImage | ||
| 148 | - if self.badgeImage != nil { | ||
| 149 | - self.backgroundColor = UIColor.red | ||
| 150 | - } | ||
| 151 | - badgeView.addSubview(imageview) | ||
| 152 | - | ||
| 153 | - if self.badgeValue != nil { | ||
| 154 | - let badgeLabel = UILabel(frame: badgeView.bounds) | ||
| 155 | - badgeLabel.text = self.badgeValue | ||
| 156 | - badgeLabel.textAlignment = .center | ||
| 157 | - badgeLabel.font = UIFont.systemFont(ofSize: 13) | ||
| 158 | - badgeLabel.textColor = UIColor.white | ||
| 159 | - badgeView.addSubview(badgeLabel) | ||
| 160 | - } | ||
| 161 | - | ||
| 162 | - iconView.addSubview(badgeView) | ||
| 163 | - } | ||
| 164 | - | ||
| 165 | - // MARK:-隐藏小红点 | ||
| 166 | - public func hiddenRedPointOnIndex(index:Int, animation:Bool){ | ||
| 167 | - self.removeRedPointOnIndex(index: index, animation: animation) | ||
| 168 | - } | ||
| 169 | - | ||
| 170 | - private func removeRedPointOnIndex(index:Int, animation:Bool) { | ||
| 171 | - let barButtonView = self.getBarButttonViewWithIndex(index: index) | ||
| 172 | - | ||
| 173 | - for swapView in barButtonView.subviews { | ||
| 174 | - | ||
| 175 | - if swapView.isKind(of: UIImageView.self) { | ||
| 176 | - | ||
| 177 | - for view1 in swapView.subviews { | ||
| 178 | - | ||
| 179 | - if view1.tag == (badgeTag + 1) { | ||
| 180 | - | ||
| 181 | - if animation { | ||
| 182 | - UIView.animate(withDuration: 0.2, animations: { | ||
| 183 | - view1.transform = CGAffineTransform(translationX: 2, y: 2) | ||
| 184 | - view1.alpha = 0 | ||
| 185 | - }) { (finished) in | ||
| 186 | - view1.removeFromSuperview() | ||
| 187 | - } | ||
| 188 | - }else{ | ||
| 189 | - view1.removeFromSuperview() | ||
| 190 | - } | ||
| 191 | - | ||
| 192 | - } | ||
| 193 | - | ||
| 194 | - } | ||
| 195 | - | ||
| 196 | - } | ||
| 197 | - | ||
| 198 | - } | ||
| 199 | - | ||
| 200 | - } | ||
| 201 | - | ||
| 202 | - // 获取barButtonView | ||
| 203 | - private func getBarButttonViewWithIndex(index:Int) -> UIView { | ||
| 204 | - | ||
| 205 | - if let itemss = self.items { | ||
| 206 | - let item = itemss[index] | ||
| 207 | - let barButtonView = item.value(forKey: "view") | ||
| 208 | - return barButtonView as! UIView | ||
| 209 | - } | ||
| 210 | - | ||
| 211 | - let vw = UIView() | ||
| 212 | - return vw | ||
| 213 | - } | ||
| 214 | - | ||
| 215 | -} | 11 | +//extension UITabBar { |
| 12 | +// /** | ||
| 13 | +// tabbar tag | ||
| 14 | +// */ | ||
| 15 | +// private var badgeTag:Int! { | ||
| 16 | +// get{ | ||
| 17 | +// return 1000 | ||
| 18 | +// } | ||
| 19 | +// set{ | ||
| 20 | +// | ||
| 21 | +// } | ||
| 22 | +// } | ||
| 23 | +// | ||
| 24 | +// /** | ||
| 25 | +// 运行时对应的key值 | ||
| 26 | +// */ | ||
| 27 | +// private struct AssociatedKeys { | ||
| 28 | +// static var kBadgeSize:String! = "kBadgeSize" | ||
| 29 | +// static var kBadgeColor:String! = "kBadgeColor" | ||
| 30 | +// static var kBadgeImage:String! = "kBadgeImage" | ||
| 31 | +// static var kBadgePoint:String! = "kBadgePoint" | ||
| 32 | +// static var kBadgeValue:String! = "kBadgeValue" | ||
| 33 | +// } | ||
| 34 | +// | ||
| 35 | +// | ||
| 36 | +// // 小红点size | ||
| 37 | +// public var badgeSize:CGSize! { | ||
| 38 | +// get{ | ||
| 39 | +// return objc_getAssociatedObject(self, &AssociatedKeys.kBadgeSize) as? CGSize | ||
| 40 | +// } | ||
| 41 | +// set{ | ||
| 42 | +// objc_setAssociatedObject(self, &AssociatedKeys.kBadgeSize, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) | ||
| 43 | +// } | ||
| 44 | +// } | ||
| 45 | +// | ||
| 46 | +// // 小红点图片 | ||
| 47 | +// public var badgeImage:UIImage! { | ||
| 48 | +// get{ | ||
| 49 | +// return objc_getAssociatedObject(self, &AssociatedKeys.kBadgeImage) as? UIImage | ||
| 50 | +// } | ||
| 51 | +// set{ | ||
| 52 | +// objc_setAssociatedObject(self, &AssociatedKeys.kBadgeImage, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) | ||
| 53 | +// } | ||
| 54 | +// } | ||
| 55 | +// | ||
| 56 | +// // 小红点颜色 | ||
| 57 | +// public var badgeColor:UIColor! { | ||
| 58 | +// get{ | ||
| 59 | +// return objc_getAssociatedObject(self, &AssociatedKeys.kBadgeColor) as? UIColor | ||
| 60 | +// } | ||
| 61 | +// set{ | ||
| 62 | +// objc_setAssociatedObject(self, &AssociatedKeys.kBadgeColor, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) | ||
| 63 | +// } | ||
| 64 | +// } | ||
| 65 | +// | ||
| 66 | +// // 小红点的x、y值 | ||
| 67 | +// public var badgePoint:CGPoint! { | ||
| 68 | +// get{ | ||
| 69 | +// return objc_getAssociatedObject(self, &AssociatedKeys.kBadgePoint) as? CGPoint | ||
| 70 | +// } | ||
| 71 | +// set{ | ||
| 72 | +// objc_setAssociatedObject(self, &AssociatedKeys.kBadgePoint, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) | ||
| 73 | +// } | ||
| 74 | +// } | ||
| 75 | +// | ||
| 76 | +// // 小红点的数字 | ||
| 77 | +// public var badgeValue:String! { | ||
| 78 | +// get{ | ||
| 79 | +// return objc_getAssociatedObject(self, &AssociatedKeys.kBadgeValue) as? String | ||
| 80 | +// } | ||
| 81 | +// set{ | ||
| 82 | +// objc_setAssociatedObject(self, &AssociatedKeys.kBadgeValue, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) | ||
| 83 | +// } | ||
| 84 | +// } | ||
| 85 | +// | ||
| 86 | +// // MARK:-显示小红点 | ||
| 87 | +// public func showBadgeOnItemIndex(index:Int){ | ||
| 88 | +// // 移除 | ||
| 89 | +// self.removeRedPointOnIndex(index: index, animation: false) | ||
| 90 | +// | ||
| 91 | +// // 防止是空的 | ||
| 92 | +// if self.badgeColor == nil { | ||
| 93 | +// self.badgeColor = UIColor() | ||
| 94 | +// self.badgeColor = UIColor.red | ||
| 95 | +// } | ||
| 96 | +// | ||
| 97 | +// if self.badgePoint == nil { | ||
| 98 | +// self.badgePoint = CGPoint() | ||
| 99 | +// self.badgePoint = CGPoint.zero | ||
| 100 | +// } | ||
| 101 | +// | ||
| 102 | +// if self.badgeSize == nil { | ||
| 103 | +// self.badgeSize = CGSize.zero | ||
| 104 | +// } | ||
| 105 | +// | ||
| 106 | +// if self.badgeImage == nil { | ||
| 107 | +// self.badgeImage = UIImage() | ||
| 108 | +// } | ||
| 109 | +// | ||
| 110 | +// if self.badgeValue == nil { | ||
| 111 | +// self.badgeValue = String() | ||
| 112 | +// } | ||
| 113 | +// | ||
| 114 | +// // 小红点背景默认值大小设置 | ||
| 115 | +// if __CGSizeEqualToSize(self.badgeSize, CGSize.zero) { | ||
| 116 | +// self.badgeSize = CGSize(width: 12, height: 12) | ||
| 117 | +// } | ||
| 118 | +// | ||
| 119 | +// | ||
| 120 | +// let badgeView = UIView() | ||
| 121 | +// badgeView.backgroundColor = self.badgeColor | ||
| 122 | +// badgeView.layer.cornerRadius = self.badgeSize.width / 2 | ||
| 123 | +// badgeView.tag = badgeTag + 1 | ||
| 124 | +// | ||
| 125 | +// let barButtonView = self.getBarButttonViewWithIndex(index: index) | ||
| 126 | +// //(图片的imageView) | ||
| 127 | +// var iconView = UIView() | ||
| 128 | +// for swappableImageView in barButtonView.subviews { | ||
| 129 | +// | ||
| 130 | +// if swappableImageView.isKind(of: UIImageView.self) { | ||
| 131 | +// iconView = swappableImageView | ||
| 132 | +// break | ||
| 133 | +// } | ||
| 134 | +// | ||
| 135 | +// } | ||
| 136 | +// | ||
| 137 | +// // 小红点背景默认值Point设置 | ||
| 138 | +// if __CGPointEqualToPoint(self.badgePoint, CGPoint.zero) { | ||
| 139 | +// let iconViewSize = iconView.frame.size | ||
| 140 | +// badgeView.frame = CGRect(x: iconViewSize.width - self.badgeSize.width / 2, y: -self.badgeSize.width / 2, width: self.badgeSize.width, height: self.badgeSize.height) | ||
| 141 | +// }else{ | ||
| 142 | +// badgeView.frame = CGRect(x: self.badgePoint.x, y: self.badgePoint.y, width: self.badgeSize.width, height: self.badgeSize.height) | ||
| 143 | +// } | ||
| 144 | +// | ||
| 145 | +// // 添加图片到小红点上 | ||
| 146 | +// let imageview = UIImageView(frame: badgeView.bounds) | ||
| 147 | +// imageview.image = self.badgeImage | ||
| 148 | +// if self.badgeImage != nil { | ||
| 149 | +// self.backgroundColor = UIColor.red | ||
| 150 | +// } | ||
| 151 | +// badgeView.addSubview(imageview) | ||
| 152 | +// | ||
| 153 | +// if self.badgeValue != nil { | ||
| 154 | +// let badgeLabel = UILabel(frame: badgeView.bounds) | ||
| 155 | +// badgeLabel.text = self.badgeValue | ||
| 156 | +// badgeLabel.textAlignment = .center | ||
| 157 | +// badgeLabel.font = UIFont.systemFont(ofSize: 13) | ||
| 158 | +// badgeLabel.textColor = UIColor.white | ||
| 159 | +// badgeView.addSubview(badgeLabel) | ||
| 160 | +// } | ||
| 161 | +// | ||
| 162 | +// iconView.addSubview(badgeView) | ||
| 163 | +// } | ||
| 164 | +// | ||
| 165 | +// // MARK:-隐藏小红点 | ||
| 166 | +// public func hiddenRedPointOnIndex(index:Int, animation:Bool){ | ||
| 167 | +// self.removeRedPointOnIndex(index: index, animation: animation) | ||
| 168 | +// } | ||
| 169 | +// | ||
| 170 | +// private func removeRedPointOnIndex(index:Int, animation:Bool) { | ||
| 171 | +// let barButtonView = self.getBarButttonViewWithIndex(index: index) | ||
| 172 | +// | ||
| 173 | +// for swapView in barButtonView.subviews { | ||
| 174 | +// | ||
| 175 | +// if swapView.isKind(of: UIImageView.self) { | ||
| 176 | +// | ||
| 177 | +// for view1 in swapView.subviews { | ||
| 178 | +// | ||
| 179 | +// if view1.tag == (badgeTag + 1) { | ||
| 180 | +// | ||
| 181 | +// if animation { | ||
| 182 | +// UIView.animate(withDuration: 0.2, animations: { | ||
| 183 | +// view1.transform = CGAffineTransform(translationX: 2, y: 2) | ||
| 184 | +// view1.alpha = 0 | ||
| 185 | +// }) { (finished) in | ||
| 186 | +// view1.removeFromSuperview() | ||
| 187 | +// } | ||
| 188 | +// }else{ | ||
| 189 | +// view1.removeFromSuperview() | ||
| 190 | +// } | ||
| 191 | +// | ||
| 192 | +// } | ||
| 193 | +// | ||
| 194 | +// } | ||
| 195 | +// | ||
| 196 | +// } | ||
| 197 | +// | ||
| 198 | +// } | ||
| 199 | +// | ||
| 200 | +// } | ||
| 201 | +// | ||
| 202 | +// // 获取barButtonView | ||
| 203 | +// private func getBarButttonViewWithIndex(index:Int) -> UIView { | ||
| 204 | +// | ||
| 205 | +// if let itemss = self.items { | ||
| 206 | +// let item = itemss[index] | ||
| 207 | +// let barButtonView = item.value(forKey: "view") | ||
| 208 | +// return barButtonView as! UIView | ||
| 209 | +// } | ||
| 210 | +// | ||
| 211 | +// let vw = UIView() | ||
| 212 | +// return vw | ||
| 213 | +// } | ||
| 214 | +// | ||
| 215 | +//} |
metaCode/Classes/Main/HomePage/Controller/CNMetaCodeHomePageController.swift
| @@ -14,6 +14,8 @@ let Height: CGFloat = UIScreen.main.bounds.size.height | @@ -14,6 +14,8 @@ let Height: CGFloat = UIScreen.main.bounds.size.height | ||
| 14 | 14 | ||
| 15 | class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDelegate, NewPagedFlowViewDataSource, CNCustomIndexViewDelegate{ | 15 | class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDelegate, NewPagedFlowViewDataSource, CNCustomIndexViewDelegate{ |
| 16 | 16 | ||
| 17 | + | ||
| 18 | + | ||
| 17 | private var tabBarY:CGFloat = 0.0 | 19 | private var tabBarY:CGFloat = 0.0 |
| 18 | 20 | ||
| 19 | // MARK: - 懒加载 | 21 | // MARK: - 懒加载 |
| @@ -48,19 +50,31 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel | @@ -48,19 +50,31 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel | ||
| 48 | 50 | ||
| 49 | self.tabBarY = (self.tabBarController?.tabBar.top)! | 51 | self.tabBarY = (self.tabBarController?.tabBar.top)! |
| 50 | 52 | ||
| 51 | - self.view.backgroundColor = KVCBackgroupColor | ||
| 52 | 53 | ||
| 53 | for i in (0..<2) { | 54 | for i in (0..<2) { |
| 54 | self.dataArray.add("122") | 55 | self.dataArray.add("122") |
| 55 | } | 56 | } |
| 56 | 57 | ||
| 57 | self.setupUI() | 58 | self.setupUI() |
| 59 | + | ||
| 60 | +// self.tabBarController?.tabBar.top = self.tabBarY + KSreenHeight | ||
| 61 | + | ||
| 62 | + } | ||
| 63 | + override func viewWillAppear(_ animated: Bool) { | ||
| 64 | + super.viewWillAppear(animated) | ||
| 65 | + } | ||
| 66 | + override func viewDidAppear(_ animated: Bool) { | ||
| 67 | + super.viewDidAppear(animated) | ||
| 68 | + self.view.height = KSreenHeight | ||
| 69 | + | ||
| 70 | + | ||
| 58 | } | 71 | } |
| 59 | - | ||
| 60 | // MARK: - 添加UI | 72 | // MARK: - 添加UI |
| 61 | func setupUI(){ | 73 | func setupUI(){ |
| 74 | + self.view.backgroundColor = KVCBackgroupColor | ||
| 62 | self.view.addSubview(self.pageFlowView) | 75 | self.view.addSubview(self.pageFlowView) |
| 63 | self.pageFlowView.reloadData() | 76 | self.pageFlowView.reloadData() |
| 77 | + | ||
| 64 | } | 78 | } |
| 65 | 79 | ||
| 66 | // MARK: - NewPagedFlowView代理 | 80 | // MARK: - NewPagedFlowView代理 |
| @@ -89,9 +103,22 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel | @@ -89,9 +103,22 @@ class CNMetaCodeHomePageController:CNLiveBaseViewController, NewPagedFlowViewDel | ||
| 89 | } | 103 | } |
| 90 | 104 | ||
| 91 | //MARK: - CNCustomIndexView 代理方法 | 105 | //MARK: - CNCustomIndexView 代理方法 |
| 106 | + func customIndexViewWillBeiginScroll(scrollView: UIScrollView) { | ||
| 107 | + self.view.height = KSreenHeight | ||
| 108 | + } | ||
| 92 | func customIndexViewDidScroll(scrollView: UIScrollView) { | 109 | func customIndexViewDidScroll(scrollView: UIScrollView) { |
| 93 | let fabsOffset: CGFloat = abs(scrollView.contentOffset.y - KSreenHeight) | 110 | let fabsOffset: CGFloat = abs(scrollView.contentOffset.y - KSreenHeight) |
| 94 | self.tabBarController?.tabBar.top = self.tabBarY + fabsOffset | 111 | self.tabBarController?.tabBar.top = self.tabBarY + fabsOffset |
| 112 | +// print("view 的frame ",self.view.frame) | ||
| 113 | + | ||
| 114 | + | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | + | ||
| 118 | + func customIndexViewDidEndScroll(scrollView: UIScrollView) { | ||
| 119 | + if scrollView.contentOffset.y == KSreenHeight { | ||
| 120 | + self.view.height = self.tabBarY | ||
| 121 | + } | ||
| 95 | } | 122 | } |
| 96 | 123 | ||
| 97 | } | 124 | } |
metaCode/Classes/Main/HomePage/View/CNCustomIndexView.swift
| @@ -7,13 +7,70 @@ | @@ -7,13 +7,70 @@ | ||
| 7 | 7 | ||
| 8 | import Foundation | 8 | import Foundation |
| 9 | 9 | ||
| 10 | +typealias closeBlock = ()->Void; | ||
| 11 | + | ||
| 12 | +class CNCustomIndexTopView : UIView{ | ||
| 13 | + //关闭按钮事件回调 | ||
| 14 | + var closeAction: closeBlock? | ||
| 15 | + | ||
| 16 | + //MARK: - 懒加载 | ||
| 17 | + ///标题 | ||
| 18 | + lazy var titleLabel: UILabel = { | ||
| 19 | + let titleLabel = UILabel.init(frame: CGRectMake(10, 0, 75, 35)) | ||
| 20 | + titleLabel.bottom = self.bottom - 5 | ||
| 21 | + titleLabel.textColor = .white | ||
| 22 | + titleLabel.font = UIFont.systemFont(ofSize: 24, weight: .semibold) | ||
| 23 | + return titleLabel | ||
| 24 | + }() | ||
| 25 | + ///关闭按钮 | ||
| 26 | + lazy var closeBtn: UIButton = { | ||
| 27 | + let closeBtn = UIButton(type: .custom) | ||
| 28 | + closeBtn.frame = CGRect(x: self.width - 30, y: 0, width: 30, height: 30) | ||
| 29 | + closeBtn.centerY = self.titleLabel.centerY | ||
| 30 | + closeBtn.setImage(UIImage(named: "homePage_close_icon"), for: .normal) | ||
| 31 | + closeBtn.addTarget(self, action: #selector(closeBtnAction), for: .touchUpInside) | ||
| 32 | + return closeBtn | ||
| 33 | + }() | ||
| 34 | + //MARK: - 初始化 | ||
| 35 | + override init(frame: CGRect) { | ||
| 36 | + super.init(frame: frame) | ||
| 37 | + self.initUI() | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + required init?(coder: NSCoder) { | ||
| 41 | + fatalError("init(coder:) has not been implemented") | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + func initUI(){ | ||
| 45 | + self.addSubview(self.titleLabel) | ||
| 46 | + self.addSubview(self.closeBtn) | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + //MARK: - 公开方法 | ||
| 50 | + public func setTitleString(title:String)->Void{ | ||
| 51 | + self.titleLabel.text = title | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + //MARK: - 事件 | ||
| 55 | + @objc func closeBtnAction(){ | ||
| 56 | + closeAction?() | ||
| 57 | + } | ||
| 58 | +} | ||
| 59 | + | ||
| 10 | 60 | ||
| 11 | protocol CNCustomIndexViewDelegate:NSObjectProtocol{ | 61 | protocol CNCustomIndexViewDelegate:NSObjectProtocol{ |
| 12 | - ///当前scrollView 发送滚动 | 62 | + /// 当前scrollView 将要开始滚动 |
| 63 | + func customIndexViewWillBeiginScroll(scrollView :UIScrollView); | ||
| 64 | + ///当前scrollView 滚动中 | ||
| 13 | func customIndexViewDidScroll(scrollView :UIScrollView); | 65 | func customIndexViewDidScroll(scrollView :UIScrollView); |
| 66 | + ///当前scrollView 已经结束滚动 | ||
| 67 | + func customIndexViewDidEndScroll(scrollView :UIScrollView); | ||
| 68 | + | ||
| 14 | } | 69 | } |
| 15 | 70 | ||
| 16 | class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChangeDelegate{ | 71 | class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChangeDelegate{ |
| 72 | + | ||
| 73 | + | ||
| 17 | 74 | ||
| 18 | var colorChange: WJColorChange! | 75 | var colorChange: WJColorChange! |
| 19 | 76 | ||
| @@ -89,14 +146,14 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange | @@ -89,14 +146,14 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange | ||
| 89 | return payMoneyCodeView | 146 | return payMoneyCodeView |
| 90 | }() | 147 | }() |
| 91 | 148 | ||
| 92 | - ///底部付钱提前view | 149 | + ///上滑付钱提醒view |
| 93 | lazy var bottomPayMoneyRemindView: CNBottomPayMoneyRemindView = { | 150 | lazy var bottomPayMoneyRemindView: CNBottomPayMoneyRemindView = { |
| 94 | let W: CGFloat = UIScreen.main.bounds.width-100 | 151 | let W: CGFloat = UIScreen.main.bounds.width-100 |
| 95 | let bottomView = CNBottomPayMoneyRemindView.init(frame: CGRectMake(25, self.baseScrollView.height*2, W,W/2)) | 152 | let bottomView = CNBottomPayMoneyRemindView.init(frame: CGRectMake(25, self.baseScrollView.height*2, W,W/2)) |
| 96 | bottomView.backgroundColor = UIColor.clear | 153 | bottomView.backgroundColor = UIColor.clear |
| 97 | return bottomView | 154 | return bottomView |
| 98 | }() | 155 | }() |
| 99 | - /// 顶部收钱提前view | 156 | + /// 下滑收钱提醒view |
| 100 | lazy var topCollectMoneyRemindView:CNTopCollectMoneyRemindView = { | 157 | lazy var topCollectMoneyRemindView:CNTopCollectMoneyRemindView = { |
| 101 | let W: CGFloat = UIScreen.main.bounds.width-100 | 158 | let W: CGFloat = UIScreen.main.bounds.width-100 |
| 102 | let topView = CNTopCollectMoneyRemindView.init(frame: CGRectMake(25, self.baseScrollView.height-W/2, W,W/2)) | 159 | let topView = CNTopCollectMoneyRemindView.init(frame: CGRectMake(25, self.baseScrollView.height-W/2, W,W/2)) |
| @@ -104,6 +161,15 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange | @@ -104,6 +161,15 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange | ||
| 104 | return topView | 161 | return topView |
| 105 | }() | 162 | }() |
| 106 | 163 | ||
| 164 | + /// 顶部自定义导航 | ||
| 165 | + lazy var topNavView: CNCustomIndexTopView = { | ||
| 166 | + let topNavView = CNCustomIndexTopView.init(frame: CGRect(x: 0, y: 0, width: self.width, height: KNavigationHeight)) | ||
| 167 | + topNavView.closeAction = { | ||
| 168 | + print("点击了关闭按钮") | ||
| 169 | + } | ||
| 170 | + return topNavView | ||
| 171 | + }() | ||
| 172 | + | ||
| 107 | // MARK: - 初始化方法 | 173 | // MARK: - 初始化方法 |
| 108 | override init(frame: CGRect) { | 174 | override init(frame: CGRect) { |
| 109 | super.init(frame: frame) | 175 | super.init(frame: frame) |
| @@ -116,9 +182,11 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange | @@ -116,9 +182,11 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange | ||
| 116 | 182 | ||
| 117 | // MARK: - 添加UI | 183 | // MARK: - 添加UI |
| 118 | func initUI(){ | 184 | func initUI(){ |
| 119 | - self.addSubview(self.baseScrollView) | ||
| 120 | - self.baseScrollView.addSubview(self.collectMoneyCodeView) | 185 | + self.addSubview(self.baseScrollView) |
| 186 | + self.addSubview(self.topNavView) | ||
| 187 | + self.topNavView.setTitleString(title: "志愿者") | ||
| 121 | 188 | ||
| 189 | + self.baseScrollView.addSubview(self.collectMoneyCodeView) | ||
| 122 | self.baseScrollView.addSubview(self.mainView) | 190 | self.baseScrollView.addSubview(self.mainView) |
| 123 | self.baseScrollView.addSubview(self.payMoneyCodeView) | 191 | self.baseScrollView.addSubview(self.payMoneyCodeView) |
| 124 | self.baseScrollView.addSubview(self.bottomPayMoneyRemindView) | 192 | self.baseScrollView.addSubview(self.bottomPayMoneyRemindView) |
| @@ -148,6 +216,11 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange | @@ -148,6 +216,11 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange | ||
| 148 | } | 216 | } |
| 149 | 217 | ||
| 150 | // MARK: - WJColorChange代理 | 218 | // MARK: - WJColorChange代理 |
| 219 | + ///将要开始拖拽滚动 | ||
| 220 | + func wjColorScrollViewWillBeginDragging(_ scrollView: UIScrollView!) { | ||
| 221 | + self.delegate?.customIndexViewWillBeiginScroll(scrollView: scrollView) | ||
| 222 | + } | ||
| 223 | + | ||
| 151 | ///WJColorChange 代理方法 滚动时候回调 传出当前的滚动视图 | 224 | ///WJColorChange 代理方法 滚动时候回调 传出当前的滚动视图 |
| 152 | func wjColorScrollViewScroll(_ scrollView: UIScrollView!) { | 225 | func wjColorScrollViewScroll(_ scrollView: UIScrollView!) { |
| 153 | 226 | ||
| @@ -218,6 +291,15 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange | @@ -218,6 +291,15 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange | ||
| 218 | // self.mainView.scaledView(scale: scale) | 291 | // self.mainView.scaledView(scale: scale) |
| 219 | // } | 292 | // } |
| 220 | 293 | ||
| 294 | + /**隐藏顶部导航**/ | ||
| 295 | + let topNavViewAlpha: CGFloat = 1.0 - (self.baseScrollView.height * 2 - currentOffset)/self.baseScrollView.height | ||
| 296 | + if(topNavViewAlpha > 0){ | ||
| 297 | + self.topNavView.alpha = topNavViewAlpha/2 | ||
| 298 | + } | ||
| 299 | + else{ | ||
| 300 | + self.topNavView.alpha = 0 | ||
| 301 | + } | ||
| 302 | + | ||
| 221 | 303 | ||
| 222 | delegate?.customIndexViewDidScroll(scrollView: self.baseScrollView) | 304 | delegate?.customIndexViewDidScroll(scrollView: self.baseScrollView) |
| 223 | 305 | ||
| @@ -240,6 +322,7 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange | @@ -240,6 +322,7 @@ class CNCustomIndexView:PGIndexBannerSubiew, UIScrollViewDelegate, WJColorChange | ||
| 240 | self.superScrollView?.isScrollEnabled = false | 322 | self.superScrollView?.isScrollEnabled = false |
| 241 | } | 323 | } |
| 242 | 324 | ||
| 325 | + self.delegate?.customIndexViewDidEndScroll(scrollView: scrollView) | ||
| 243 | } | 326 | } |
| 244 | 327 | ||
| 245 | } | 328 | } |
metaCode/Classes/Main/HomePage/View/CNMainView.swift
| @@ -105,7 +105,7 @@ class CNBackMainView : UIView{ | @@ -105,7 +105,7 @@ class CNBackMainView : UIView{ | ||
| 105 | bottomBackBtn.setTitleColor(UIColor("#333333"), for: .normal) | 105 | bottomBackBtn.setTitleColor(UIColor("#333333"), for: .normal) |
| 106 | bottomBackBtn.setImage(UIImage(named: "homePage_backBtn_icon"), for: .normal) | 106 | bottomBackBtn.setImage(UIImage(named: "homePage_backBtn_icon"), for: .normal) |
| 107 | bottomBackBtn.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 8) | 107 | bottomBackBtn.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 8) |
| 108 | - bottomBackBtn.titleLabel?.font = UIFont(name: "KohinoorTelugu-Regular", size: 15) | 108 | + bottomBackBtn.titleLabel?.font = UIFont.systemFont(ofSize: 15, weight: .regular) |
| 109 | 109 | ||
| 110 | bottomBackBtn.addTarget(self, action: #selector(tapAction), for: .touchUpInside) | 110 | bottomBackBtn.addTarget(self, action: #selector(tapAction), for: .touchUpInside) |
| 111 | return bottomBackBtn | 111 | return bottomBackBtn |
metaCode/Classes/Main/LoginPage/Controller/CNLiveLoginViewController.swift
| @@ -181,7 +181,7 @@ class CNLiveLoginViewController : CNLiveBaseViewController, UITextViewDelegate { | @@ -181,7 +181,7 @@ class CNLiveLoginViewController : CNLiveBaseViewController, UITextViewDelegate { | ||
| 181 | selectButton.snp.makeConstraints { make in | 181 | selectButton.snp.makeConstraints { make in |
| 182 | make.bottom.equalTo(view.snp.bottom).offset(-50) | 182 | make.bottom.equalTo(view.snp.bottom).offset(-50) |
| 183 | make.left.equalTo(view.snp.left).offset(30) | 183 | make.left.equalTo(view.snp.left).offset(30) |
| 184 | - make.hei.equalTo(15) | 184 | + make.height.equalTo(15) |
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | let attributedString = NSMutableAttributedString(string: "我已阅读并同意《APP用户服务协议》《个人信息保护政策》", | 187 | let attributedString = NSMutableAttributedString(string: "我已阅读并同意《APP用户服务协议》《个人信息保护政策》", |
metaCode/Classes/Vendors/WJColorChange.h
| @@ -10,7 +10,11 @@ | @@ -10,7 +10,11 @@ | ||
| 10 | 10 | ||
| 11 | 11 | ||
| 12 | @protocol WJColorChangeDelegate <NSObject> | 12 | @protocol WJColorChangeDelegate <NSObject> |
| 13 | - | 13 | +/** |
| 14 | + 将要开始拖拽滚动 | ||
| 15 | + @param scrollView 滚动视图 | ||
| 16 | + */ | ||
| 17 | +- (void)WJColorScrollViewWillBeginDragging:(UIScrollView *)scrollView; | ||
| 14 | 18 | ||
| 15 | /** | 19 | /** |
| 16 | 滚动时候回调 传出当前的滚动视图 | 20 | 滚动时候回调 传出当前的滚动视图 |
metaCode/Classes/Vendors/WJColorChange.m
| @@ -123,8 +123,13 @@ | @@ -123,8 +123,13 @@ | ||
| 123 | - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView | 123 | - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView |
| 124 | { | 124 | { |
| 125 | _startOffsetY = scrollView.contentOffset.y; | 125 | _startOffsetY = scrollView.contentOffset.y; |
| 126 | + if ([self.delegate respondsToSelector:@selector(WJColorScrollViewWillBeginDragging:)]) { | ||
| 127 | + | ||
| 128 | + [self.delegate WJColorScrollViewWillBeginDragging:scrollView]; | ||
| 129 | + } | ||
| 126 | } | 130 | } |
| 127 | 131 | ||
| 132 | + | ||
| 128 | - (void)scrollViewDidScroll:(UIScrollView *)scrollView { | 133 | - (void)scrollViewDidScroll:(UIScrollView *)scrollView { |
| 129 | 134 | ||
| 130 | 135 |
metaCode/Supporting Files/Assets.xcassets/Home/homePage_close_icon.imageset/Contents.json
0 → 100644
| 1 | +{ | ||
| 2 | + "images" : [ | ||
| 3 | + { | ||
| 4 | + "idiom" : "universal", | ||
| 5 | + "scale" : "1x" | ||
| 6 | + }, | ||
| 7 | + { | ||
| 8 | + "filename" : "关闭@2x.png", | ||
| 9 | + "idiom" : "universal", | ||
| 10 | + "scale" : "2x" | ||
| 11 | + }, | ||
| 12 | + { | ||
| 13 | + "filename" : "关闭@3x.png", | ||
| 14 | + "idiom" : "universal", | ||
| 15 | + "scale" : "3x" | ||
| 16 | + } | ||
| 17 | + ], | ||
| 18 | + "info" : { | ||
| 19 | + "author" : "xcode", | ||
| 20 | + "version" : 1 | ||
| 21 | + } | ||
| 22 | +} |
metaCode/Supporting Files/Assets.xcassets/Home/homePage_close_icon.imageset/关闭@2x.png
0 → 100644
422 Bytes
metaCode/Supporting Files/Assets.xcassets/Home/homePage_close_icon.imageset/关闭@3x.png
0 → 100644
693 Bytes