0

UIToolbar的视图顶部有一个,它需要在动画中调整大小。工具栏包含:

  • 使用UIBarButtonItem系统项目UIBarButtonSystemItemAdd(“+”按钮)
  • AUIBarButtonItem使用自定义视图(标题)
  • AUIBarButtonItem使用样式UIBarButtonItemStyleBordered(“编辑”按钮)

我在每个按钮之间使用间隔符添加这些按钮,使标题保持在中心:

    [toolbar setItems: @[addButton, spacer, titleButton, spacer, editButton] animated:NO];

原始尺寸

工具栏的大小调整得很好,两个按钮的位置固定在外边缘。但是,标题按钮不会停留在工具栏的中心。相反,它似乎将其右边缘固定在同一位置,在其左侧创建了一个空间。在动画期间,这给人的印象是它向右滑动。

扩大尺寸

需要明确的是,我确实希望标题栏保持相同的宽度 - 我不希望它随着工具栏的增长而扩展。但我需要标题留在工具栏的中心。

由于 aUIBarButtonItem不是 a UIView,我不能(?)使用该autoresizingmask功能。

如何将标题保持在工具栏的中心?

附加信息

这可能是因为“添加”和“编辑”按钮的宽度不同 - 当我只添加标题(两边都有一个分隔符)时,行为是正确的。

4

2 回答 2

0

事实证明,我遗漏了一个关键细节。我手动将width编辑按钮的设置为 50。

如果将其删除,则调整大小将按预期工作。但是,我无法控制编辑按钮的大小,我喜欢将其设置为 50,以便与导航栏上的按钮匹配。

我找到了一个可行的解决方案。保持 Edit 按钮的宽度为 50。在 '+' 按钮后立即添加一个固定分隔符,并将其宽度设置为 18(50 - '+' 按钮的宽度)。这平衡了标题两侧的项目。

于 2012-10-10T20:02:42.727 回答
0

我知道这太糟糕了,您仍然可以使用自定义按钮作为栏按钮项目并在其中使用添加/编辑按钮的图像。这样您就可以在任何地方设置按钮框架。所以你的按钮不会放在最右边的地方。

UIButton * addButton = [[UIButton alloc] init];
[addButton setBackgroundImage:<AddimageName> forState:UIControlStateNormal];
UIBarButtonItem * addItem = [[UIBarButtonItem alloc] initWithCustomView:addButton];
于 2012-10-10T19:30:52.573 回答