【问题标题】:Resized UIToolbar refuses to keep its UIBarButtonItem aligned correctly调整大小的 UIToolbar 拒绝保持其 UIBarButtonItem 正确对齐
【发布时间】:2012-10-10 19:12:41
【问题描述】:

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

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

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

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

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

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

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

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

其他信息

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      UIButton * addButton = [[UIButton alloc] init];
      [addButton setBackgroundImage:<AddimageName> forState:UIControlStateNormal];
      UIBarButtonItem * addItem = [[UIBarButtonItem alloc] initWithCustomView:addButton];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-18
        • 1970-01-01
        • 1970-01-01
        • 2013-12-02
        • 1970-01-01
        • 2011-09-07
        • 2010-11-07
        相关资源
        最近更新 更多