修复导航栏按钮跳动的问题。

This commit is contained in:
Fin 2020-09-23 15:26:49 +08:00
parent e5d8326371
commit 7b9a9b8330
6 changed files with 111 additions and 10 deletions

View File

@ -14,6 +14,8 @@
060481EE250F404500BC9799 /* SoundsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 060481ED250F404500BC9799 /* SoundsViewController.swift */; };
060481F0250F51CA00BC9799 /* SoundCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 060481EF250F51CA00BC9799 /* SoundCell.swift */; };
0604F7DF20620D4900B32F09 /* ServerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0604F7DE20620D4900B32F09 /* ServerManager.swift */; };
062B98C3251B2762004562E7 /* BKButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 062B98C2251B2762004562E7 /* BKButton.swift */; };
062B98C8251B27AE004562E7 /* UINavigationItem+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 062B98C7251B27AE004562E7 /* UINavigationItem+Extension.swift */; };
0632050F250B6DD4001561EC /* gotosleep.caf in Resources */ = {isa = PBXBuildFile; fileRef = 063204F0250B6DD1001561EC /* gotosleep.caf */; };
06320510250B6DD4001561EC /* paymentsuccess.caf in Resources */ = {isa = PBXBuildFile; fileRef = 063204F1250B6DD1001561EC /* paymentsuccess.caf */; };
06320511250B6DD4001561EC /* shake.caf in Resources */ = {isa = PBXBuildFile; fileRef = 063204F2250B6DD1001561EC /* shake.caf */; };
@ -125,6 +127,8 @@
060481ED250F404500BC9799 /* SoundsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoundsViewController.swift; sourceTree = "<group>"; };
060481EF250F51CA00BC9799 /* SoundCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoundCell.swift; sourceTree = "<group>"; };
0604F7DE20620D4900B32F09 /* ServerManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerManager.swift; sourceTree = "<group>"; };
062B98C2251B2762004562E7 /* BKButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BKButton.swift; sourceTree = "<group>"; };
062B98C7251B27AE004562E7 /* UINavigationItem+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UINavigationItem+Extension.swift"; sourceTree = "<group>"; };
063204F0250B6DD1001561EC /* gotosleep.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = gotosleep.caf; sourceTree = "<group>"; };
063204F1250B6DD1001561EC /* paymentsuccess.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = paymentsuccess.caf; sourceTree = "<group>"; };
063204F2250B6DD1001561EC /* shake.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = shake.caf; sourceTree = "<group>"; };
@ -259,6 +263,8 @@
06C5953024811392006B98F3 /* ArchiveSettingCell.swift */,
06C595352481160F006B98F3 /* BKLabel.swift */,
060481EF250F51CA00BC9799 /* SoundCell.swift */,
062B98C2251B2762004562E7 /* BKButton.swift */,
062B98C7251B27AE004562E7 /* UINavigationItem+Extension.swift */,
);
path = View;
sourceTree = "<group>";
@ -654,6 +660,7 @@
files = (
0603706920E1F89500F4CA05 /* PreviewCardCell.swift in Sources */,
0637FA8C20E0D7A700E80174 /* BaseViewController.swift in Sources */,
062B98C8251B27AE004562E7 /* UINavigationItem+Extension.swift in Sources */,
060481EE250F404500BC9799 /* SoundsViewController.swift in Sources */,
0603706D20E23EC000F4CA05 /* BarkSFSafariViewController.swift in Sources */,
06C5953124811392006B98F3 /* ArchiveSettingCell.swift in Sources */,
@ -672,6 +679,7 @@
0604F7DF20620D4900B32F09 /* ServerManager.swift in Sources */,
0667D192247D162C005DE2ED /* MessageTableViewCell.swift in Sources */,
0603706720E1E31600F4CA05 /* Defines.swift in Sources */,
062B98C3251B2762004562E7 /* BKButton.swift in Sources */,
06885EB6247FB9880004A303 /* MessageSettingsViewController.swift in Sources */,
06C5953324811505006B98F3 /* ArchiveSettingManager.swift in Sources */,
06C5952D2480E3F8006B98F3 /* LabelCell.swift in Sources */,

View File

@ -11,9 +11,9 @@ import UserNotifications
import Material
class HomeViewController: BaseViewController {
let newButton: IconButton = {
let btn = IconButton(image: Icon.add, tintColor: .black)
btn.pulseColor = .black
let newButton: BKButton = {
let btn = BKButton()
btn.setImage(Icon.add, for: .normal)
btn.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
return btn
}()
@ -86,12 +86,13 @@ class HomeViewController: BaseViewController {
self.view.backgroundColor = Color.grey.lighten3
newButton.addTarget(self, action: #selector(new), for: .touchUpInside)
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: newButton)
navigationItem.setRightBarButtonItem(item: UIBarButtonItem(customView: newButton))
let messageBtn = IconButton(image: Icon.history, tintColor: .black)
let messageBtn = BKButton()
messageBtn.setImage(Icon.history, for: .normal)
messageBtn.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
messageBtn.addTarget(self, action: #selector(history), for: .touchUpInside)
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: messageBtn)
navigationItem.setLeftBarButtonItem(item: UIBarButtonItem(customView: messageBtn))
self.view.addSubview(self.tableView)
self.tableView.snp.makeConstraints { (make ) in

View File

@ -26,10 +26,11 @@ class MessageListViewController: BaseViewController {
super.viewDidLoad()
self.title = NSLocalizedString("historyMessage")
let settingButton = IconButton(image: Icon.settings, tintColor: .black)
let settingButton = BKButton()
settingButton.setImage(Icon.settings, for: .normal)
settingButton.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
settingButton.addTarget(self, action: #selector(settingClick), for: .touchUpInside)
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: settingButton)
navigationItem.setRightBarButtonItem(item: UIBarButtonItem(customView: settingButton))
self.view.addSubview(tableView)
tableView.dataSource = self

View File

@ -31,16 +31,17 @@ class NewServerViewController: BaseViewController {
return label
}()
let doneButton = IconButton(image: Icon.check, tintColor: .black)
let doneButton = BKButton()
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = NSLocalizedString("AddServer")
doneButton.setImage(Icon.check, for: .normal)
doneButton.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
doneButton.addTarget(self, action: #selector(done), for: .touchUpInside)
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: doneButton)
navigationItem.setRightBarButtonItem(item: UIBarButtonItem(customView: doneButton))
self.view.layout(addressTextField).top(kNavigationHeight + 40).left(10).right(10)

34
View/BKButton.swift Normal file
View File

@ -0,0 +1,34 @@
//
// BKButton.swift
// Bark
//
// Created by huangfeng on 2020/9/23.
// Copyright © 2020 Fin. All rights reserved.
//
import UIKit
protocol AlignmentRectInsetsOverridable:class {
var alignmentRectInsetsOverride: UIEdgeInsets? {get set}
}
protocol HitTestSlopable:class {
var hitTestSlop: UIEdgeInsets {get set}
}
class BKButton: UIButton, HitTestSlopable,AlignmentRectInsetsOverridable {
var hitTestSlop:UIEdgeInsets = UIEdgeInsets.zero
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
if hitTestSlop == UIEdgeInsets.zero {
return super.point(inside: point, with:event)
}
else{
return self.bounds.inset(by: hitTestSlop).contains(point)
}
}
var alignmentRectInsetsOverride: UIEdgeInsets?
override var alignmentRectInsets: UIEdgeInsets {
return alignmentRectInsetsOverride ?? super.alignmentRectInsets
}
}

View File

@ -0,0 +1,56 @@
//
// UINavigationItem+Extension.swift
// Bark
//
// Created by huangfeng on 2020/9/23.
// Copyright © 2020 Fin. All rights reserved.
//
import UIKit
// item UIBarButtonItem 8
//16
// fixedSpace UIBarButtonItem
// AlignmentRectInsetsOverridable /
// HitTestSlopable
extension UINavigationItem {
func setLeftBarButtonItem(item: UIBarButtonItem){
setBarButtonItems(items: [item], left: true)
}
func setRightBarButtonItem(item: UIBarButtonItem){
setBarButtonItems(items: [item], left: false)
}
func setBarButtonItems(items: [UIBarButtonItem], left:Bool){
guard items.count > 0 else {
self.leftBarButtonItems = nil
return
}
var buttonItems = items
if #available(iOS 11.0, *) {
buttonItems.forEach { (item) in
guard let view = item.customView else {return}
item.customView?.translatesAutoresizingMaskIntoConstraints = false
(item.customView as? HitTestSlopable)?.hitTestSlop = UIEdgeInsets(top: -10, left: -10, bottom: -10, right: -10)
(item.customView as? AlignmentRectInsetsOverridable)?.alignmentRectInsetsOverride = UIEdgeInsets(top: 0, left: left ? 8 : -8, bottom: 0, right: left ? -8 : 8)
item.customView?.snp.makeConstraints({ (make) in
make.width.equalTo(view.bounds.size.width > 24 ? view.bounds.width : 24)
make.height.equalTo(view.bounds.size.height > 24 ? view.bounds.height : 24)
})
}
buttonItems.insert(UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil), at: 0)
}
else{
let spacer = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
spacer.width = -8
buttonItems.insert(spacer, at: 0)
}
if left {
self.leftBarButtonItems = buttonItems
}
else {
self.rightBarButtonItems = buttonItems
}
}
}