Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit bdb39e8

Browse files
重构WRNavigaitonBar
1 parent 173eae1 commit bdb39e8

File tree

6 files changed

+45
-76
lines changed

6 files changed

+45
-76
lines changed

‎WRNavigationBar_swift/WRNavigationBar_swift/Demos/CustomNavBarController.swift‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class CustomNavBarController: BaseViewController
5050
navBarBarTintColor = UIColor.init(red: 247/255.0, green: 247/255.0, blue: 247/255.0, alpha: 1.0)
5151

5252
// 设置初始导航栏透明度
53-
navBarEffectAlpha = 0
53+
navBarBackgroundAlpha = 0
5454

5555
// 设置导航栏按钮和标题颜色
5656
navBarTintColor = .white
@@ -67,13 +67,13 @@ extension CustomNavBarController
6767
if (offsetY > NAVBAR_COLORCHANGE_POINT)
6868
{
6969
let alpha = (offsetY - NAVBAR_COLORCHANGE_POINT) / CGFloat(kNavBarBottom)
70-
navBarEffectAlpha = alpha
70+
navBarBackgroundAlpha = alpha
7171
navBarTintColor = UIColor.black.withAlphaComponent(alpha)
7272
statusBarStyle = .default
7373
}
7474
else
7575
{
76-
navBarEffectAlpha = 0
76+
navBarBackgroundAlpha = 0
7777
navBarTintColor = .white
7878
statusBarStyle = .lightContent
7979
}

‎WRNavigationBar_swift/WRNavigationBar_swift/Demos/FifthViewController.swift‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class FifthViewController: UIViewController
3838
tableView.addSubview(imageView)
3939
view.addSubview(tableView)
4040

41-
navBarEffectAlpha = 0
41+
navBarBackgroundAlpha = 0
4242
}
4343
}
4444

@@ -53,11 +53,11 @@ extension FifthViewController
5353
if (offsetY > NAVBAR_COLORCHANGE_POINT)
5454
{
5555
let alpha = (offsetY - NAVBAR_COLORCHANGE_POINT) / CGFloat(kNavBarBottom)
56-
navBarEffectAlpha = alpha
56+
navBarBackgroundAlpha = alpha
5757
}
5858
else
5959
{
60-
navBarEffectAlpha = 0
60+
navBarBackgroundAlpha = 0
6161
}
6262

6363
// 限制下拉距离

‎WRNavigationBar_swift/WRNavigationBar_swift/Demos/FirstViewController.swift‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class FirstViewController: UIViewController
4747
navBarBarTintColor = UIColor.init(red: 247/255.0, green: 247/255.0, blue: 247/255.0, alpha: 1.0)
4848

4949
// 设置初始导航栏透明度
50-
navBarEffectAlpha = 0
50+
navBarBackgroundAlpha = 0
5151

5252
// 设置导航栏按钮和标题颜色
5353
navBarTintColor = .white
@@ -64,13 +64,13 @@ extension FirstViewController
6464
if (offsetY > NAVBAR_COLORCHANGE_POINT)
6565
{
6666
let alpha = (offsetY - NAVBAR_COLORCHANGE_POINT) / CGFloat(kNavBarBottom)
67-
navBarEffectAlpha = alpha
67+
navBarBackgroundAlpha = alpha
6868
navBarTintColor = UIColor.black.withAlphaComponent(alpha)
6969
statusBarStyle = .default
7070
}
7171
else
7272
{
73-
navBarEffectAlpha = 0
73+
navBarBackgroundAlpha = 0
7474
navBarTintColor = .white
7575
statusBarStyle = .lightContent
7676
}

‎WRNavigationBar_swift/WRNavigationBar_swift/Demos/FourthViewController.swift‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class FourthViewController: UIViewController
3838
tableView.addSubview(imageView)
3939
view.addSubview(tableView)
4040

41-
navBarEffectAlpha = 0
41+
navBarBackgroundAlpha = 0
4242
}
4343
}
4444

@@ -76,10 +76,10 @@ extension FourthViewController
7676
if let weakSelf = self
7777
{
7878
if (isClear == true) {
79-
weakSelf.navBarEffectAlpha = 0
79+
weakSelf.navBarBackgroundAlpha = 0
8080
}
8181
else {
82-
weakSelf.navBarEffectAlpha = 1.0
82+
weakSelf.navBarBackgroundAlpha = 1.0
8383
}
8484
}
8585
})

‎WRNavigationBar_swift/WRNavigationBar_swift/Demos/MoveListController.swift‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class MoveListController: UIViewController
2424
tableView.backgroundColor = UIColor.white
2525

2626
navBarBarTintColor = UIColor.init(red: 247/255.0, green: 247/255.0, blue: 247/255.0, alpha: 1.0)
27-
navBarEffectAlpha = 1.0
27+
navBarBackgroundAlpha = 1.0
2828
navBarTintColor = .black
2929
statusBarStyle = .default
3030
}

‎WRNavigationBar_swift/WRNavigationBar_swift/WRNavigationBar/WRNavigationBar.swift‎

Lines changed: 32 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -29,44 +29,21 @@ extension UINavigationBar
2929
// set navigationBar barTintColor
3030
fileprivate func wr_setBackgroundColor(color:UIColor)
3131
{
32-
// barTintColor = color
3332
if (backgroundView == nil)
3433
{
35-
// 设置导航栏本身全透明
34+
// add a image(nil color) to _UIBarBackground make it clear
3635
setBackgroundImage(UIImage(), for: .default)
3736
backgroundView = UIView(frame: CGRect(x: 0, y: 0, width: Int(bounds.width), height: 64))
38-
// _UIBarBackground是导航栏的第一个子控件
37+
// _UIBarBackground is first subView for navigationBar
3938
subviews.first?.insertSubview(backgroundView ?? UIView(), at: 0)
4039
}
4140
backgroundView?.backgroundColor = color
4241
}
4342

44-
// set navigationBar effectView alpha 设置导航栏毛玻璃的透明度
43+
// set _UIBarBackground alpha (_UIBarBackground subviews alpha <= _UIBarBackground alpha)
4544
fileprivate func wr_setBackgroundAlpha(alpha:CGFloat)
4645
{
4746
let barBackgroundView = subviews[0]
48-
let valueForKey = barBackgroundView.value(forKey:)
49-
50-
if let shadowView = valueForKey("_shadowView") as? UIView {
51-
shadowView.alpha = alpha
52-
}
53-
54-
if isTranslucent {
55-
if #available(iOS 10.0, *) {
56-
if let backgroundEffectView = valueForKey("_backgroundEffectView") as? UIView, backgroundImage(for: .default) == nil {
57-
backgroundEffectView.alpha = alpha
58-
return
59-
}
60-
61-
} else {
62-
if let adaptiveBackdrop = valueForKey("_adaptiveBackdrop") as? UIView ,
63-
let backdropEffectView = adaptiveBackdrop.value(forKey: "_backdropEffectView") as? UIView {
64-
backdropEffectView.alpha = alpha
65-
return
66-
}
67-
}
68-
}
69-
7047
barBackgroundView.alpha = alpha
7148
}
7249

@@ -104,15 +81,6 @@ extension UINavigationBar
10481
{
10582
transform = CGAffineTransform.init(translationX: 0, y: translationY)
10683
}
107-
108-
// /// 清除在导航栏上设置的背景颜色、透明度、位移距离等属性
109-
// func wr_clear()
110-
// {
111-
// // 设置导航栏不透明
112-
// setBackgroundImage(nil, for: .default)
113-
// backgroundView?.removeFromSuperview()
114-
// backgroundView = nil
115-
// }
11684
}
11785

11886
//==========================================================================
@@ -129,9 +97,9 @@ extension UINavigationController
12997
navigationBar.wr_setBackgroundColor(color: barTintColor)
13098
}
13199

132-
fileprivate func setNeedsNavigationBarUpdate(effectAlpha: CGFloat)
100+
fileprivate func setNeedsNavigationBarUpdate(barBackgroundAlpha: CGFloat)
133101
{
134-
navigationBar.wr_setBackgroundAlpha(alpha: effectAlpha)
102+
navigationBar.wr_setBackgroundAlpha(alpha: barBackgroundAlpha)
135103
}
136104

137105
fileprivate func setNeedsNavigationBarUpdate(tintColor: UIColor) {
@@ -236,11 +204,11 @@ extension UINavigationController
236204
let newTintColor = UIColor.middleColor(fromColor: fromTintColor, toColor: toTintColor, percent: popProgress)
237205
setNeedsNavigationBarUpdate(tintColor: newTintColor)
238206

239-
// change navBar effectView alpha
240-
let fromEffectAlpha = fromVC?.navBarEffectAlpha ?? UIColor.defaultEffectAlpha
241-
let toEffectAlpha = toVC?.navBarEffectAlpha ?? UIColor.defaultEffectAlpha
242-
let newEffectAlpha = UIColor.middleAlpha(fromAlpha: fromEffectAlpha, toAlpha: toEffectAlpha, percent: popProgress)
243-
setNeedsNavigationBarUpdate(effectAlpha: newEffectAlpha)
207+
// change navBar _UIBarBackground alpha
208+
let fromBarBackgroundAlpha = fromVC?.navBarBackgroundAlpha ?? UIColor.defaultBackgroundAlpha
209+
let toBarBackgroundAlpha = toVC?.navBarBackgroundAlpha ?? UIColor.defaultBackgroundAlpha
210+
let newBarBackgroundAlpha = UIColor.middleAlpha(fromAlpha: fromBarBackgroundAlpha, toAlpha: toBarBackgroundAlpha, percent: popProgress)
211+
setNeedsNavigationBarUpdate(barBackgroundAlpha: newBarBackgroundAlpha)
244212
}
245213

246214

@@ -300,11 +268,11 @@ extension UINavigationController
300268
let newTintColor = UIColor.middleColor(fromColor: fromTintColor, toColor: toTintColor, percent: pushProgress)
301269
setNeedsNavigationBarUpdate(tintColor: newTintColor)
302270

303-
// change navBar effectView alpha
304-
let fromEffectAlpha = fromVC?.navBarEffectAlpha ?? UIColor.defaultEffectAlpha
305-
let toEffectAlpha = toVC?.navBarEffectAlpha ?? UIColor.defaultEffectAlpha
306-
let newEffectAlpha = UIColor.middleAlpha(fromAlpha: fromEffectAlpha, toAlpha: toEffectAlpha, percent: pushProgress)
307-
setNeedsNavigationBarUpdate(effectAlpha: newEffectAlpha)
271+
// change navBar _UIBarBackground alpha
272+
let fromBarBackgroundAlpha = fromVC?.navBarBackgroundAlpha ?? UIColor.defaultBackgroundAlpha
273+
let toBarBackgroundAlpha = toVC?.navBarBackgroundAlpha ?? UIColor.defaultBackgroundAlpha
274+
let newBarBackgroundAlpha = UIColor.middleAlpha(fromAlpha: fromBarBackgroundAlpha, toAlpha: toBarBackgroundAlpha, percent: pushProgress)
275+
setNeedsNavigationBarUpdate(barBackgroundAlpha: newBarBackgroundAlpha)
308276
}
309277
}
310278

@@ -342,9 +310,10 @@ extension UINavigationController: UINavigationBarDelegate
342310
{
343311
let animations: (UITransitionContextViewControllerKey) -> () = {
344312
let curColor = context.viewController(forKey: 0ドル)?.navBarBarTintColor ?? UIColor.defaultNavBarBarTintColor
345-
let curAlpha = context.viewController(forKey: 0ドル)?.navBarEffectAlpha ?? UIColor.defaultEffectAlpha
313+
let curAlpha = context.viewController(forKey: 0ドル)?.navBarBackgroundAlpha ?? UIColor.defaultBackgroundAlpha
314+
346315
self.setNeedsNavigationBarUpdate(barTintColor: curColor)
347-
self.setNeedsNavigationBarUpdate(effectAlpha: curAlpha)
316+
self.setNeedsNavigationBarUpdate(barBackgroundAlpha: curAlpha)
348317
}
349318

350319
// after that, cancel the gesture of return
@@ -389,11 +358,11 @@ extension UINavigationController: UINavigationBarDelegate
389358
let newTintColor = UIColor.middleColor(fromColor: fromTintColor, toColor: toTintColor, percent: percentComplete)
390359
setNeedsNavigationBarUpdate(tintColor: newTintColor)
391360

392-
// change navBar effectView alpha
393-
let fromEffectAlpha = fromVC?.navBarEffectAlpha ?? UIColor.defaultEffectAlpha
394-
let toEffectAlpha = toVC?.navBarEffectAlpha ?? UIColor.defaultEffectAlpha
395-
let newEffectAlpha = UIColor.middleAlpha(fromAlpha: fromEffectAlpha, toAlpha: toEffectAlpha, percent: percentComplete)
396-
setNeedsNavigationBarUpdate(effectAlpha: newEffectAlpha)
361+
// change navBar _UIBarBackground alpha
362+
let fromBarBackgroundAlpha = fromVC?.navBarBackgroundAlpha ?? UIColor.defaultBackgroundAlpha
363+
let toBarBackgroundAlpha = toVC?.navBarBackgroundAlpha ?? UIColor.defaultBackgroundAlpha
364+
let newBarBackgroundAlpha = UIColor.middleAlpha(fromAlpha: fromBarBackgroundAlpha, toAlpha: toBarBackgroundAlpha, percent: percentComplete)
365+
setNeedsNavigationBarUpdate(barBackgroundAlpha: newBarBackgroundAlpha)
397366

398367
wr_updateInteractiveTransition(percentComplete)
399368
}
@@ -409,7 +378,7 @@ extension UIViewController
409378
static var pushToCurrentVCFinished: Bool = false
410379
static var pushToNextVCFinished:Bool = false
411380
static var navBarBarTintColor: UIColor = UIColor.defaultNavBarBarTintColor
412-
static var navBarEffectAlpha:CGFloat = 1.0
381+
static var navBarBackgroundAlpha:CGFloat = 1.0
413382
static var navBarTintColor: UIColor = UIColor.defaultNavBarTintColor
414383
static var statusBarStyle: UIStatusBarStyle = UIStatusBarStyle.default
415384
static var customNavBar: UINavigationBar = UINavigationBar()
@@ -465,16 +434,16 @@ extension UIViewController
465434
}
466435
}
467436

468-
// navigationBar effectView alpha
469-
var navBarEffectAlpha:CGFloat {
437+
// navigationBar _UIBarBackground alpha
438+
var navBarBackgroundAlpha:CGFloat {
470439
get {
471-
guard let effectAlpha = objc_getAssociatedObject(self, &AssociatedKeys.navBarEffectAlpha) as? CGFloat else {
440+
guard let barBackgroundAlpha = objc_getAssociatedObject(self, &AssociatedKeys.navBarBackgroundAlpha) as? CGFloat else {
472441
return 1.0
473442
}
474-
return effectAlpha
443+
return barBackgroundAlpha
475444
}
476445
set {
477-
objc_setAssociatedObject(self, &AssociatedKeys.navBarEffectAlpha, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
446+
objc_setAssociatedObject(self, &AssociatedKeys.navBarBackgroundAlpha, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
478447

479448
if customNavBar.isKind(of: UINavigationBar.self) {
480449
let navBar = customNavBar as! UINavigationBar
@@ -483,7 +452,7 @@ extension UIViewController
483452
else
484453
{
485454
if pushToCurrentVCFinished == true && pushToNextVCFinished == false {
486-
navigationController?.setNeedsNavigationBarUpdate(effectAlpha: newValue)
455+
navigationController?.setNeedsNavigationBarUpdate(barBackgroundAlpha: newValue)
487456
}
488457
}
489458
}
@@ -583,7 +552,7 @@ extension UIViewController
583552
func wr_viewDidAppear(_ animated: Bool)
584553
{
585554
navigationController?.setNeedsNavigationBarUpdate(barTintColor: navBarBarTintColor)
586-
navigationController?.setNeedsNavigationBarUpdate(effectAlpha: navBarEffectAlpha)
555+
navigationController?.setNeedsNavigationBarUpdate(barBackgroundAlpha: navBarBackgroundAlpha)
587556
navigationController?.setNeedsNavigationBarUpdate(tintColor: navBarTintColor)
588557
wr_viewDidAppear(animated)
589558
}
@@ -661,7 +630,7 @@ extension UIColor
661630
}
662631
}
663632

664-
class var defaultEffectAlpha: CGFloat {
633+
class var defaultBackgroundAlpha: CGFloat {
665634
get {
666635
return 1.0
667636
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /