我用代码创建了一个UIToolbar,用interface builder创建了另一个UIToolbar.但是,我们发现这两个工具栏的左、右填充不同,如下所示:

从界面生成器:

在此处输入图像描述

来自代码:

在此处输入图像描述

UIImage *buttonImage = [[UIImage imageNamed:@"button.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:0];
UIButton *btnTest = [UIButton buttonWithType:UIButtonTypeCustom];
[btnTest setBackgroundImage:buttonImage forState:UIControlStateNormal];
[btnTest setTitle:@"Back" forState:UIControlStateNormal];   
[btnTest.titleLabel setFont:[UIFont boldSystemFontOfSize:13]];  
[btnTest setBackgroundImage:[imgToolbarButton stretchableImageWithLeftCapWidth:5 topCapHeight:0]  forState:UIControlStateNormal];
[btnTest addTarget:self action:@selector(clearDateEdit:) forControlEvents:UIControlEventTouchUpInside];
btnTest.frame = CGRectMake(0.0, 0.0, 50, 30);
UIBarButtonItem *btnTestItem = [[UIBarButtonItem alloc] initWithCustomView:btnTest];
[self.toolbar setItems:[NSArray arrayWithObjects:btnTestItem,nil]];
[btnTestItem release];

我的问题是如何通过代码调整UIToolbar的左右填充?

Update

我发现这个对齐问题只发生在UIButtonim的customView上,UIButtonim的对齐很好.知道是什么原因导致的吗,或者解决这个问题的方法.

我现在能想到的唯一解决方案是手动设置框架.

推荐答案

我也有同样的问题,你可以用uiBarButtonSystemFixedSpace做一个巧妙的技巧,在第一个按钮之前和最后一个按钮之后添加一个负宽度的按钮,它会将按钮移动到边缘.

例如,要go 掉右边距,请添加以下FixedSpace条作为最后一项:

Update for iOS 11 up to 13

  • Swift


  • Objc

左边和右边的边距是12px.

iOS7更新-iPhone和iPad的利润率分别为16px和20px!

Objective-c相关问答推荐

try 从 id 确定类的类型时,Objective-C消息传递不合格的 id

如何使 UIView 动画序列重复和自动反转

在从 UIViewController 调用的非保留完成中引用 self 时,weakSelf/strongSelf 舞蹈真的有必要吗?

获取 Objective-C 类或实例的所有方法

如何处理 Xcode 警告没有以前的函数原型......?

在 UILabel.attributedText *not* 蓝色和 *not* 下划线

捕获组在 NSRegularExpression 中不起作用

改变 setContentOffset:animated: 的速度?

try 标记应用程序图标但未获得用户标记应用程序的权限:iOS 8 Xcode 6

如何删除应用程序指定目录中的所有文件?

Swift 3 - dynamic vs @objc

未找到 Apple Mach-O 链接器警告目录

为什么 NSOrderedSet 不继承自 NSSet?

iOS 8 Mapkit Objc 无法获取用户位置

Select 时 UITableViewCell 复选标记更改

主队列上的 dispatch_sync 与 dispatch_async

遍历 NSString 中所有字符的最有效方法

在 UITableView 的 iOS 文档目录中列出保存的文件?

如何阻止 NSNotification 中的观察者调用两次?

如何检测父视图控制器中模态视图控制器的解除?