因此,像许多其他人一样,我注意到使用 SwiftUI 添加为
Button
的 ToolbarItem
的点击区域比 UIKit 中的 UIBarButtonItem
小得多。至少我是这么想的。
下面是尝试 UIKit 等效项的简单代码:
import UIKit
@UIApplicationMain
final class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
let vc = UIViewController()
vc.navigationItem.title = "VC"
vc.view.backgroundColor = .gray //TO COMMENT OUT
let barItem = UIBarButtonItem(title: "Test", image: nil, target: nil, action: nil)
vc.navigationItem.rightBarButtonItem = barItem
let nc = UINavigationController(rootViewController: vc)
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = nc
window?.makeKeyAndVisible()
return true
}
}
它产生以下“正确”行为:
如您所见,点击区域很大,延伸到文本之外,对于用户来说很舒服。但是,如果我们注释掉设置上面视图的背景颜色(第
//TO COMMENT OUT
行),我们会得到与 SwiftUI 中观察到的相同的行为:
因此,在没有背景的情况下,我们会得到与 SwiftUI 中相同的行为 - ToolbarItem 的可点击区域太小,对于用户来说不舒服。
然而,我已经尝试了所有我能想到的方法,但 swill 找不到一种方法来确保 SwiftUI 中的可点击部分是合适的。
有谁知道解决方案是什么?
这是一个非常烦人的错误,我收到了用户的投诉:(
仅供头脑风暴
用阴影增强按钮(UIBarButtonItem.customView属性),用alpha =1隐藏阴影因此使可选择区域更大?保持对齐矩形与现在相同。
UIBarButtonItem 公开宽度(实例属性)。设置所需的更宽尺寸? UIBarButtonItem ->
var width: CGFloat { get set }
修改 UIBarButtonItem 的 customView 设置新的自定义框架?
UIBarButtonItem ->
var customView: UIView?