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 */; };
|
||||
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 */,
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
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