ios 如何找到UINavigationBar的当前UIBarMetrics值?

eni9jsuy  于 2023-06-07  发布在  iOS
关注(0)|答案(1)|浏览(188)

bounty还有3天到期。回答此问题可获得+150声望奖励。daniel希望引起更多注意这个问题:请沿着问题的确切参数回答问题。我确实希望能够获得UIBarButtonItem的UIBarMetrics。我会考虑其他替代解决方案,如果他们的工作。我确实需要UIBarMetrics,以便与原始问题使用的UIBarButtonItem.setTitlePositionAdjustment(:for:) instead of backButtonTitlePositionAdjustment(:for:)一起使用。

我在UIBarButtonItem的外观上使用setBackButtonTitlePositionAdjustment:forBarMetrics:方法,如下所示:

UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(12, -1), forBarMetrics: .Default)
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(15, -1), forBarMetrics: .Compact)

然后,在视图控制器中,我想使用backButtonTitlePositionAdjustment(for:)来获取值。我假设一定有一个我可以使用的UIBarMetrics值--也许在导航栏或UITraitCollection中,但我想我错过了一些明显的东西?

nx7onnlm

nx7onnlm1#

你可以像这样在视图控制器中检索值

if let backButtonItem = navigationItem.backBarButtonItem {
            let offset = backButtonItem.backButtonTitlePositionAdjustment(for: .default)
            print(offset) 
        }

我们检查当前视图控制器的navigationItembackBarButtonItem属性是否不是nil。如果存在,我们使用backButtonTitlePositionAdjustment(for:)方法检索后退按钮标题位置调整,并将.default条度量作为参数传递。该方法将返回偏移调整,然后您可以根据需要使用它。
请注意,如果backBarButtonItemnil,则意味着后退按钮是从以前的视图控制器继承的,或者导航项没有设置后退按钮。在这种情况下,您可能需要根据您的特定要求以不同的方式处理它

相关问题