【问题标题】:Adding constraints to a UIBarButtonItem向 UIBarButtonItem 添加约束
【发布时间】:2016-01-17 14:44:19
【问题描述】:

Xcode 不允许我在 MainStoryBoard 中的 ViewController 上对我的 BarButtonItem 施加约束。如图所示,它出现在无法读取的左侧太远。

下图显示了BarButtonItem 的位置。它应该说“项目”。我还查看了 Xcode 上的预览分屏,它在 iPhone6 上看起来不错,但在 iPhone 4 上却不行(它在 iPhone 4 上被剪掉了一半,但在这里它被剪掉了 3/4s)。在这里,我正在为 iPhone 6 运行,我明白了。

如何在 Xcode 中添加约束或如何以编程方式将约束添加到此 BarButtonItem?

非常感谢任何帮助。

【问题讨论】:

  • 您要添加什么约束?顶约束还是?
  • 我想将 BarButtonItem 定位在更右侧。 @OrkhanAlizade
  • 您是否在情节提要中添加了类似导航栏的元素?如果是 - 只需将约束添加到内部元素而不是导航栏
  • 如何将 UIBarButtonItem 添加到导航栏?使用界面构建器或代码?如果是代码,您可以发布它吗?
  • @Kirill 我试过了。它仍然离左边太远了。我正在使用界面生成器添加 UIBarButtonItem。

标签: xcode swift autolayout uinavigationbar uibarbuttonitem


【解决方案1】:

在您的 xib / 故事板中拖放导航栏

您可以根据您的要求向此导航栏添加约束。

然后将 Bar Button Item 添加到导航栏

Bar Button Item 采用默认位置,你不能在那里合并自动布局。

虽然如果你想要固定或灵活的条形按钮项目的位置,你可以使用固定的空格键按钮项目或灵活的空格键按钮项目。

如果位置是固定的,则在两个 Bar Button Item 之间拖动 Fixed Space Bar Button。 如果位置不固定,则在两个 Bar Button Item 之间灵活拖动 Flexible Space Bar Button Item。

编码愉快.. :)

【讨论】:

    【解决方案2】:

    试试这个:

    let rightConstraint = NSLayoutConstraint(item: your_item_here, attribute: .Right, relatedBy: .Equal, toItem: your_item_here, attribute: .Left, multiplier: 0, constant: 1)
    your_item_here.addConstraint(rightConstraint)
    

    P.S如果你想给你的UIBarButtonItem添加约束,会报错

    Value of type 'UIBarButtonItem' has no member 'addConstraint'
    

    附言

    因为它不是视图类,所以你不能对它应用约束。

    【讨论】:

    • 我在 ViewDidLoad 中输入了这个。不知道该放在哪里...let rightConstraint = NSLayoutConstraint(item: doneButton, attribute: .Right, relatedBy: .Equal, toItem: doneButton.superview, attribute: .Right, multiplier: 1, constant: 0.5) 我收到错误:`Type of expression ambiguous without more context'
    • @rinyfo4 您是否将按钮添加为插座?
    • 我已经更新了我的答案,但它不适用于 UIBarItem
    • 您是如何将您的项目添加到导航栏的?以编程方式还是通过拖放?
    • @OrkhanAlizade UIBarButtonItem 不是视图类。您不能对条形按钮项应用约束。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    相关资源
    最近更新 更多