【问题标题】:How can I apply a vertical alignment to a UIBarButtonItem in Swift如何在 Swift 中将垂直对齐应用于 UIBarButtonItem
【发布时间】:2019-03-12 19:33:56
【问题描述】:

我有一个 UIToolbar 包含几个 UIBarButtonItem s,不同的字体大小。所有项目似乎都与某个基线对齐。根据工具栏的高度,特定的字体大小往往会出现在垂直中心。但其他项目偏离中心。如何设置这些其他项目显示在垂直中心?

注意:这些项目都是文本 - 没有图像。 许多其他响应非常古老和/或仅适用于图像。大多数 obj.c 函数/方法都可以轻松转换为 Swift。

我使用以下方式放置物品:

func addLabel(_ text: String, textcolor: UIColor?, font: UIFont?, items: inout [UIBarButtonItem], verticalOffset: CGFloat) -> Int {
    let item = UIBarButtonItem(title: text, style: UIBarButtonItem.Style.plain, target: nil, action: nil)
    if font != nil {
        item.setTitleTextAttributes([NSAttributedString.Key.font : font!], for: UIControl.State.normal)
    }
    if textcolor != nil {
        item.tintColor = textcolor!
    }
    items.append(item)
    return items.count-1
}

我试过了(这些都不行):

  • setTitleTextAttributes 和 .baselineOffset
  • setTitlePositionAdjustment
  • setBackgroundVerticalPositionAdjustment
  • let item = UIBarButtonItem(customView: itemView) 其中 itemView 是一个 UIView

也许最后一个我将 UILabel 包装在视图中,然后将项目设置为 customView 可能有效,但对我来说,它显示在所有地方。我尝试将主要方法内容替换为:

    let itemView = UIView(frame: CGRect(x: 0, y: verticalOffset, width: 0, height: 0))
    let itemText = UILabel()
    itemText.text = text
    itemText.textColor = textcolor
    itemText.font = font
    itemText.sizeToFit()
    itemView.translatesAutoresizingMaskIntoConstraints = false
    let item = UIBarButtonItem(customView: itemView)
    itemView.addSubview(itemText)

如何偏移工具栏上的某些项目?

【问题讨论】:

    标签: swift vertical-alignment uibarbuttonitem uitoolbar


    【解决方案1】:

    嗯,我很接近。 我能够通过将每个标签包装在视图中并将其设置为自定义视图来解决此问题。然后我添加了itemText.center.y = self.center.y - verticalOffset。但是标签将它们的垂直中心与工具栏的底部对齐 - 至少在我的情况下。所以我将偏移量设置为工具栏高度的一半。它们出现在工具栏的垂直中心! (我还必须通过附加一些固定宽度的 UIBarButtonItem 来调整一些水平间距。)

    在那之后,我在访问这些项目时遇到了一些困难 - 只是一小会儿。我设法使用(items![abc].customView!.subviews[0] as! UILabel).text = "xyz" 更改了标签。 隐藏项很简单:items![abc].customView?.alpha = 0 - 将 1 设置为 Showing

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-27
      • 2022-01-06
      • 2010-12-01
      • 2013-09-15
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多