mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
修复导航栏按钮跳动的问题。
This commit is contained in:
parent
e5d8326371
commit
7b9a9b8330
@ -14,6 +14,8 @@
|
|||||||
060481EE250F404500BC9799 /* SoundsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 060481ED250F404500BC9799 /* SoundsViewController.swift */; };
|
060481EE250F404500BC9799 /* SoundsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 060481ED250F404500BC9799 /* SoundsViewController.swift */; };
|
||||||
060481F0250F51CA00BC9799 /* SoundCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 060481EF250F51CA00BC9799 /* SoundCell.swift */; };
|
060481F0250F51CA00BC9799 /* SoundCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 060481EF250F51CA00BC9799 /* SoundCell.swift */; };
|
||||||
0604F7DF20620D4900B32F09 /* ServerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0604F7DE20620D4900B32F09 /* ServerManager.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 */; };
|
0632050F250B6DD4001561EC /* gotosleep.caf in Resources */ = {isa = PBXBuildFile; fileRef = 063204F0250B6DD1001561EC /* gotosleep.caf */; };
|
||||||
06320510250B6DD4001561EC /* paymentsuccess.caf in Resources */ = {isa = PBXBuildFile; fileRef = 063204F1250B6DD1001561EC /* paymentsuccess.caf */; };
|
06320510250B6DD4001561EC /* paymentsuccess.caf in Resources */ = {isa = PBXBuildFile; fileRef = 063204F1250B6DD1001561EC /* paymentsuccess.caf */; };
|
||||||
06320511250B6DD4001561EC /* shake.caf in Resources */ = {isa = PBXBuildFile; fileRef = 063204F2250B6DD1001561EC /* shake.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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
063204F0250B6DD1001561EC /* gotosleep.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = gotosleep.caf; sourceTree = "<group>"; };
|
||||||
063204F1250B6DD1001561EC /* paymentsuccess.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = paymentsuccess.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>"; };
|
063204F2250B6DD1001561EC /* shake.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = shake.caf; sourceTree = "<group>"; };
|
||||||
@ -259,6 +263,8 @@
|
|||||||
06C5953024811392006B98F3 /* ArchiveSettingCell.swift */,
|
06C5953024811392006B98F3 /* ArchiveSettingCell.swift */,
|
||||||
06C595352481160F006B98F3 /* BKLabel.swift */,
|
06C595352481160F006B98F3 /* BKLabel.swift */,
|
||||||
060481EF250F51CA00BC9799 /* SoundCell.swift */,
|
060481EF250F51CA00BC9799 /* SoundCell.swift */,
|
||||||
|
062B98C2251B2762004562E7 /* BKButton.swift */,
|
||||||
|
062B98C7251B27AE004562E7 /* UINavigationItem+Extension.swift */,
|
||||||
);
|
);
|
||||||
path = View;
|
path = View;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -654,6 +660,7 @@
|
|||||||
files = (
|
files = (
|
||||||
0603706920E1F89500F4CA05 /* PreviewCardCell.swift in Sources */,
|
0603706920E1F89500F4CA05 /* PreviewCardCell.swift in Sources */,
|
||||||
0637FA8C20E0D7A700E80174 /* BaseViewController.swift in Sources */,
|
0637FA8C20E0D7A700E80174 /* BaseViewController.swift in Sources */,
|
||||||
|
062B98C8251B27AE004562E7 /* UINavigationItem+Extension.swift in Sources */,
|
||||||
060481EE250F404500BC9799 /* SoundsViewController.swift in Sources */,
|
060481EE250F404500BC9799 /* SoundsViewController.swift in Sources */,
|
||||||
0603706D20E23EC000F4CA05 /* BarkSFSafariViewController.swift in Sources */,
|
0603706D20E23EC000F4CA05 /* BarkSFSafariViewController.swift in Sources */,
|
||||||
06C5953124811392006B98F3 /* ArchiveSettingCell.swift in Sources */,
|
06C5953124811392006B98F3 /* ArchiveSettingCell.swift in Sources */,
|
||||||
@ -672,6 +679,7 @@
|
|||||||
0604F7DF20620D4900B32F09 /* ServerManager.swift in Sources */,
|
0604F7DF20620D4900B32F09 /* ServerManager.swift in Sources */,
|
||||||
0667D192247D162C005DE2ED /* MessageTableViewCell.swift in Sources */,
|
0667D192247D162C005DE2ED /* MessageTableViewCell.swift in Sources */,
|
||||||
0603706720E1E31600F4CA05 /* Defines.swift in Sources */,
|
0603706720E1E31600F4CA05 /* Defines.swift in Sources */,
|
||||||
|
062B98C3251B2762004562E7 /* BKButton.swift in Sources */,
|
||||||
06885EB6247FB9880004A303 /* MessageSettingsViewController.swift in Sources */,
|
06885EB6247FB9880004A303 /* MessageSettingsViewController.swift in Sources */,
|
||||||
06C5953324811505006B98F3 /* ArchiveSettingManager.swift in Sources */,
|
06C5953324811505006B98F3 /* ArchiveSettingManager.swift in Sources */,
|
||||||
06C5952D2480E3F8006B98F3 /* LabelCell.swift in Sources */,
|
06C5952D2480E3F8006B98F3 /* LabelCell.swift in Sources */,
|
||||||
|
|||||||
@ -11,9 +11,9 @@ import UserNotifications
|
|||||||
import Material
|
import Material
|
||||||
class HomeViewController: BaseViewController {
|
class HomeViewController: BaseViewController {
|
||||||
|
|
||||||
let newButton: IconButton = {
|
let newButton: BKButton = {
|
||||||
let btn = IconButton(image: Icon.add, tintColor: .black)
|
let btn = BKButton()
|
||||||
btn.pulseColor = .black
|
btn.setImage(Icon.add, for: .normal)
|
||||||
btn.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
|
btn.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
|
||||||
return btn
|
return btn
|
||||||
}()
|
}()
|
||||||
@ -86,12 +86,13 @@ class HomeViewController: BaseViewController {
|
|||||||
self.view.backgroundColor = Color.grey.lighten3
|
self.view.backgroundColor = Color.grey.lighten3
|
||||||
|
|
||||||
newButton.addTarget(self, action: #selector(new), for: .touchUpInside)
|
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.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
|
||||||
messageBtn.addTarget(self, action: #selector(history), for: .touchUpInside)
|
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.view.addSubview(self.tableView)
|
||||||
self.tableView.snp.makeConstraints { (make ) in
|
self.tableView.snp.makeConstraints { (make ) in
|
||||||
|
|||||||
@ -26,10 +26,11 @@ class MessageListViewController: BaseViewController {
|
|||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
self.title = NSLocalizedString("historyMessage")
|
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.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
|
||||||
settingButton.addTarget(self, action: #selector(settingClick), for: .touchUpInside)
|
settingButton.addTarget(self, action: #selector(settingClick), for: .touchUpInside)
|
||||||
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: settingButton)
|
navigationItem.setRightBarButtonItem(item: UIBarButtonItem(customView: settingButton))
|
||||||
|
|
||||||
self.view.addSubview(tableView)
|
self.view.addSubview(tableView)
|
||||||
tableView.dataSource = self
|
tableView.dataSource = self
|
||||||
|
|||||||
@ -31,16 +31,17 @@ class NewServerViewController: BaseViewController {
|
|||||||
return label
|
return label
|
||||||
}()
|
}()
|
||||||
|
|
||||||
let doneButton = IconButton(image: Icon.check, tintColor: .black)
|
let doneButton = BKButton()
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
|
|
||||||
navigationItem.title = NSLocalizedString("AddServer")
|
navigationItem.title = NSLocalizedString("AddServer")
|
||||||
|
|
||||||
|
doneButton.setImage(Icon.check, for: .normal)
|
||||||
doneButton.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
|
doneButton.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
|
||||||
doneButton.addTarget(self, action: #selector(done), for: .touchUpInside)
|
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)
|
self.view.layout(addressTextField).top(kNavigationHeight + 40).left(10).right(10)
|
||||||
|
|
||||||
|
|||||||
34
View/BKButton.swift
Normal file
34
View/BKButton.swift
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
56
View/UINavigationItem+Extension.swift
Normal file
56
View/UINavigationItem+Extension.swift
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user