ios - 获取 UIBarButtonItem 的坐标或 CGPoint

Posted

技术标签:

【中文标题】ios - 获取 UIBarButtonItem 的坐标或 CGPoint【英文标题】:ios - Get coordinates or CGPoint of a UIBarButtonItem 【发布时间】:2013-01-27 03:20:38 【问题描述】:

我需要获取 UIBarButtonItem 的 CGPoint。我知道我可以通过这样做获得它们的普通 UIButton:

- (IBAction)buttonTapped:(UIButton *)sender
  
    CGPoint coordinates = sender.frame.origin;
  

但是,如果我为 UIBarButtonItem 更改它,这似乎不起作用。 我需要程序将这些值返回给我的原因是,否则在 iPhone 5、4S 和屏幕前,当我包含横向版本时,我需要设置 3 个可能的位置,如果没有更简单的方法,我会这样做实现这一目标的方法。

【问题讨论】:

如果你什么都不做,在不同的屏幕(横向)会发生什么?它不会自动调整吗? UIBarButtonItem 没有 frame 属性 - 所以这段代码无法完成这项工作 呃,你能清楚地解释为什么你需要这个吗? 我有一个弹出窗口,在按下按钮时会激活,我需要转到 UIBarButton 所在的位置,当您查看坐标时,它可能位于 3 个位置。上面的例子避免了很多代码,但我不能让它像我使用的按钮一样简单。 【参考方案1】:

我找到了这个答案here。

正如所指出的,UIBarButtonItem 没有扩展 UIView,因此它没有 frame 属性。链接中提供的解决方法是私有 API,通常不推荐使用。

UIView* barView = sender.view;
CGRect barFrame = [barView convertRect:barView.bounds toView:nil];

链接中还提供了另一种解决方案。

【讨论】:

非常感谢 - 我已经猜到了,但它只是根据使用该应用程序的设备类型使用 if 语句进行管理。

以上是关于ios - 获取 UIBarButtonItem 的坐标或 CGPoint的主要内容,如果未能解决你的问题,请参考以下文章

UIBarButtonItem 如何禁用辅助功能 (iOS)

iOS UIBarButtonItem 对齐方式

没有为 UIBarButtonItem 调用 iOS 选择器

iOS 14 在打开之前设置 UIBarButtonItem 菜单

在 iOS 8.2 上更改 UIBarButtonItem 的垂直位置

如何让 iOS 在 UIBarButtonItem 图像上设置渐变?