获取 UIBarButtonItem 图像相对于其导航栏的位置 iOS 7

Get UIBarButtonItem image position relative to its navigation bar in iOS 7

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

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

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

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

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];

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

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