【问题标题】:Aligning UIToolBar items对齐 UIToolBar 项
【发布时间】:2010-10-10 19:17:45
【问题描述】:

我创建了三个UIBarButtonItem,如下所示。它们向左对齐,我想对齐中心,所以右侧没有间隙。我在UIToolBar 上看不到 align 属性。有没有其他方法可以做到这一点?

//create some buttons
UIBarButtonItem *aboutButton = [[UIBarButtonItem alloc] initWithTitle:@"About" style:UIBarButtonItemStyleBordered target:self action:@selector(showAbout:)];
[toolbar setItems:[NSArray arrayWithObjects:settingsButton,deleteButton,aboutButton,nil]];
//Add the toolbar as a subview to the navigation controller.
[self.navigationController.view addSubview:toolbar];

【问题讨论】:

    标签: ios cocoa-touch uitoolbar


    【解决方案1】:

    将两个 UIBarButtonSystemItemFlexibleSpace 项目添加到您的工具栏,分别位于项目的左侧和右侧

    UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
    [toolbar setItems:[NSArray arrayWithObjects:flexibleSpace, settingsButton,deleteButton,aboutButton, flexibleSpace, nil]];
    

    像添加任何其他工具栏项一样添加它们将在它们两者之间平均分配空间。

    【讨论】:

    • 没有真正的理由创建多个灵活空间。如果您需要多个灵活空间对象,可以多次将相同的多个灵活空间对象添加到工具栏。
    • mmc 是正确的。事实上,制作一个单独的灵活空间并在整个产品中重用它可能是完全合理的。我听说它声称这是单例的真正原始用途:不是为了强制执行程序规则,而是为了减少开销。
    • 您忘记更新发布调用,应该阅读 [flexibleSpace release];
    • 是的,对不起,它读作 [flexibleSpaceLeft release] 而不是 [flexibleSpace release]。错字已修复
    【解决方案2】:

    在 Xamarin iOS 中

    右对齐:

    yourBar.SetItems(new [] { new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), yourButton }, false);
    

    居中对齐:

    var flexibleSpace = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
    yourBar.SetItems(new [] { flexibleSpace, yourButton, flexibleSpace}, false);
    

    【讨论】:

    • 这不是主题。我们在这里谈论的是纯 iOS。
    • MonoTouch 的目标是什么。
    • Objective C 问题不是 MonoTouch/C#
    • @MaxMacLeod:它没有标记为 obj-c,而是标记为 iPhone。因此我的回答是有效的。对比 c# 和 obj-c 也很好。显然,c# 在各方面都更现代、更苗条、更好、更快、更优越。
    • 虽然问题中的代码显然是 Objective-C,但我发现这个答案很有帮助。这也是 Google 中排名靠前的问题。
    【解决方案3】:

    这也可以直接从情节提要中完成。

    只需在工具栏中拖放项目,将其中的一些变为灵活或固定的空间即可获得所需的效果。请参阅下面的两个示例。

    【讨论】:

      【解决方案4】:

      Swift 版本:

          let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: viewController.view.frame.size.width, height: 35.0))
          let flexibleSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: viewController, action: nil)
          let button1 = UIBarButtonItem(title: "A", style: UIBarButtonItem.Style.Plain, target: viewController, action: foo)
          let button2 = UIBarButtonItem(title: "B", style: UIBarButtonItem.Style.Plain, target: viewController, action: bar)
          let button3 = UIBarButtonItem(title: "C", style: UIBarButtonItem.Style.Plain, target: viewController, action: blah)
          toolbar.items = [button1, flexibleSpace, button2, flexibleSpace, button3]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-09
        • 1970-01-01
        • 1970-01-01
        • 2011-09-28
        • 2021-02-21
        • 2010-11-24
        相关资源
        最近更新 更多