【问题标题】:Get UIBarButtonItem image position relative to its navigation bar in iOS 7在 iOS 7 中获取 UIBarButtonItem 图像相对于其导航栏的位置
【发布时间】:2016-04-27 20:02:50
【问题描述】:

我有一个草图界面原型,我可以从中获取 UI 元素的坐标。当我创建带有图像的栏按钮时,它被放置在导航栏上的默认位置。代码如下:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"my-image"] style:UIBarButtonItemStylePlain target:self action:nil];

此默认位置与所需位置不同。是否可以确定相对于其导航栏的默认图像位置(框架) (white rect on this screenshot) 没有自定义按钮?我需要它将图像向左移动一点,但我不想在视觉上使用近似偏移量。

【问题讨论】:

  • 可以发截图吗?
  • @KetanP,我已将屏幕截图链接添加到问题。
  • 您需要提供代码的更多详细信息,并更好地指定您正在寻找什么样的解决方案。

标签: ios objective-c cocoa-touch uikit uibarbuttonitem


【解决方案1】:

您可以使用 KVC 访问当前导航栏项目视图

UIView *leftBarButtonItemView = [self.navigationItem.leftBarButtonItem valueForKey:@"view"];

【讨论】:

    【解决方案2】:

    您可以使用边缘插图
    对于按钮文本标题:

    button.titleEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, 0.0, 5.0);
    

    对于带图片的按钮:

    button.imageEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, 0.0, 5.0);
    


    或者,如果您只想水平移动按钮:

    UIBarButtonItem *spaceButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    [spaceButtonItem setWidth:-3]; // to move on the left
    self.navigationItem.leftBarButtonItems = @[spaceButtonItem, leftButton];
    

    【讨论】:

    • 谢谢,我知道移动条形按钮的方法,但问题是关于获取图像(不是条形按钮)的位置。因为使用这种方法,我只能尝试一些偏移值,直到位置看起来不错。但是我怎么知道我将图像放置在模型中描述的同一点?
    猜你喜欢
    • 1970-01-01
    • 2013-12-27
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多