Iphone Utoolbar-页边距?有人知道UIToolbar的左右边距吗?

Iphone Utoolbar-页边距?有人知道UIToolbar的左右边距吗?,iphone,cocoa-touch,ios4,uitoolbar,Iphone,Cocoa Touch,Ios4,Uitoolbar,我正在创建一个UIToolbar,上面只放了一个UILabel。标签内容是动态的,可以更改,我希望将其放在UIToolbar的中心 有人知道UIToolbar左右两侧的确切边距大小吗 我正在使用CustomView创建一个[[uiBarButtonim alloc]init:myLabelContainer],并试图确保myLabelContainer占用整个工具栏空间,减去强制边距 现在我猜每边的边距大约是12像素,所以帧宽为296的UIView应该填满整个UIToolbar 这些信息在任何地

我正在创建一个UIToolbar,上面只放了一个UILabel。标签内容是动态的,可以更改,我希望将其放在UIToolbar的中心

有人知道UIToolbar左右两侧的确切边距大小吗

我正在使用CustomView创建一个[[uiBarButtonim alloc]init:myLabelContainer],并试图确保myLabelContainer占用整个工具栏空间,减去强制边距

现在我猜每边的边距大约是12像素,所以帧宽为296的UIView应该填满整个UIToolbar


这些信息在任何地方都可用吗?

我认为这些信息不可用。 但是通过一些测试应该很容易得到

如果您只需要在整个工具栏上添加一个UILabel,我建议您将其添加到
UIToolbar
,这是一个
UIView
子类。在您的案例中,您不需要所有的
UIBarButtonItem
功能。。。。我猜是背景吧

然后设置
UILabel.frame
(带有所需的页边距)+
addSubview:
+a
UITextAlignmentCenter
应该可以完成这项工作!另外,如果您有管理设备定向功能,还可以使用带有
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight
的autoresizingMask

编辑1

由于对该建议存在一些疑问,我做了一个快速测试:

UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(10, 0, 300, 44)] autorelease];
label.text = @"Hello world";
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor whiteColor];
label.shadowColor = [UIColor blackColor];
label.backgroundColor = RGBACOLOR(255, 0, 0, .3f);
[self.toolbar addSubview:label];
结果如下:

编辑2

现在我已经启动了Xcode并编写了一些代码,这很容易理解您的主要问题。对之前的代码稍加修改:

UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 44)] autorelease];
... same
[self.toolbar setItems:
 [NSArray arrayWithObject:
  [[[UIBarButtonItem alloc] initWithCustomView:label] autorelease]]];
提出:

所以,正如您所猜测的,有一个12px的左边距,但自定义视图的大小看起来不适合,因此,在这种情况下,没有右边距。。。除非相应地调整视图的大小

编辑3

除非您的UILabel需要背景,否则我可能会这样做(毕竟,
uiBarButtonSystemEmitemFlexibleSpace
就是为了这个目的……):

结果是:

编辑4


另一方面,在对
UIToolbar
进行更多操作后,
12px
是按钮前添加的默认空间。我刚刚发现了一个有趣的问题,间隔者使用的是负值。也就是说,如果您想在两个按钮之间留出2px的空间,只需添加一个-10px
UIBarButtonSystemItemFixedSpace
。。。汉迪

这个边距似乎没有存储在任何地方,但这里有一种在Xamarin中计算的方法。首先将按钮添加到ViewController中的工具栏:

UIButton button = new UIButton();
button.Tag = 999;
ToolbarItems = new[] { FilterButton };
然后使用此代码读取(使用断点)任何特定方向和设备的填充值。(我已经包含了一个方向变量,因为如果您在旋转事件中调用此代码,它将告诉您应用程序当前的方向。)


作为记录,对于iOS9,iPhone上的纵向值为16,横向值为20,iPad上的横向值均为20。

@Vincent-G如果您的意思是只将UILabel添加为子视图,
[myToolbar addSubview:myUILabel]
,则这是不正确的。请参阅:该链接提到Interface Builder,我没有使用它,您是否尝试过以这种方式添加标签?(正在启动Xcode…)+1,用于上的负宽度值UIBarButtonSystemItemFixedSpace@Johan很高兴听到这对你有帮助!:)
UIButton button = new UIButton();
button.Tag = 999;
ToolbarItems = new[] { FilterButton };
if (NavigationController != null)
{
    UIButton firstButton = NavigationController.Toolbar.Subviews
        .FirstOrDefault(x => x.GetType() == typeof(UIButton) && x.Tag == 999);
    if (firstButton != null)
    {
        var orientation = UIApplication.SharedApplication.StatusBarOrientation;
        var padding = firstButton.Frame.X;
    }
}