UIBarButtonItem的字体大小设置

5

我正在使用以下代码创建一个UIBarButtonItem

    let rightItem = UIBarButtonItem(title: "➞", style: UIBarButtonItemStyle.Plain, target: self, action: "navigateToViewTwo")

    if let font = UIFont(name: "System", size: 25.0) {
        rightItem.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal)}

    navigationController?.navigationBar.topItem?.rightBarButtonItem = rightItem

按钮应该显示一个右箭头,它确实显示了。问题是字体不能控制按钮的大小。我得到以下结果:

enter image description here

只有在使用系统字体时才会出现这种情况。我尝试使用Helvetica,结果如下:

enter image description here

箭头确实更大,但也太高了。如果我旋转屏幕,它看起来很糟糕。

enter image description here

箭头太高,看起来不协调。与左侧的Item按钮相比,它看起来如何?那个是拖放的。我该如何调整箭头大小和位置,使其正确地显示在屏幕上?
3个回答

15

你需要设置标题边距

使用自定义视图

var btn = UIButton.buttonWithType(UIButtonType.System) as! UIButton
btn.frame = CGRectMake(10, 20, 50, 50)
btn.setTitle("➞", forState: UIControlState.Normal)
btn.titleLabel?.font = UIFont(name: "Helvetica" , size: 17)
btn.titleEdgeInsets = UIEdgeInsetsMake(5, 0, 0, 0)
btn.addTarget(self, action: Selector("navigateToViewTwo"), forControlEvents: UIControlEvents.TouchUpInside)
var right = UIBarButtonItem(customView: btn)

按照您所做的方式使用Normal函数

var rightItem = UIBarButtonItem(title: "➞", style: UIBarButtonItemStyle.Plain, target: self, action: "navigateToViewTwo")
rightItem.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Helvetica", size: 17.0)!], forState: UIControlState.Normal)
rightItem.setTitlePositionAdjustment(UIOffsetMake(0.0, 5.0), forBarMetrics: UIBarMetrics.Default)

将两者设为比较对象,只需添加看起来更好的即可:

navigationController?.navigationBar.topItem?.rightBarButtonItems = [rightItem,right]

结果 :

在这里输入图片描述

希望它对你有所帮助。


这对于rightBarButtonItems非常有效,但是对于backBarButtonItems根本不起作用。 backBarItem不受字体设置的影响。 它保持相同的大小。 是否还需要做其他事情才能使所有按钮都起作用? - Scott Kilbourn
@ScottKilbourn 如果你想在左侧添加按钮,可以使用 leftBarButtonItems - Ashish Kakkad
@ScottKilbourn 如果你只想设置一个按钮,那么可以使用 rightBarButtonItem 或者 leftBarButtonItem - Ashish Kakkad

7
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor : UIColor(red:0.12, green:0.28, blue:0.40, alpha:1.0), NSAttributedStringKey.font: UIFont(name: "GalanoGrotesque-SemiBold", size: 18)!], for: .normal)

1

我之前遇到过这个问题,决定使用自定义视图来处理,如下所示:

    var view = // create your custom view
    var btnMenu = UIBarButtonItem(customView: view)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接