我想像Back Button一样显示Next Button,但是rightBarButton不像后面的barButton那样触摸到屏幕的末尾。
let button = UIButton(type: .system)
button.setImage(UIImage(named: "ic_next_button"), for: .normal) // 22x22 1x, 44x44 2x, 66x66 3x
button.setTitle("Next", for: .normal)
button.sizeToFit()
button.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
button.titleLabel?.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
button.imageView?.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button)
答案 0 :(得分:7)
正如之前的回答所指出的,您需要做的就是在nextButton
的左侧添加一个负的固定空间,它将被推到右侧。
此代码创建一个8点的负固定宽度(在您的情况下似乎足够了,但可以随意调整):
let negativeWidthButtonItem = UIBarButtonItem(barButtonSystemItem: .fixedSpace,
target: nil,
action: nil)
negativeWidthButtonItem.width = -8
创建此按钮后,将其添加到rightBarButtonItems数组中:
self.navigationItem.rightBarButtonItems = [negativeWidthButtonItem, nextButton]
StackOverflow上的其他一些答案也引用了相同的解决方案:
答案 1 :(得分:2)
创建另一个UIBarButtonItem
,其类型为.fixedSpace
,一些负值为宽度。然后将两个按钮添加为右侧栏按钮项。
let button = UIButton(type: .system)
button.setImage(UIImage(named: "right"), for: .normal) // 22x22 1x, 44x44 2x, 66x66 3x
button.setTitle("Next", for: .normal)
button.sizeToFit()
button.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
button.titleLabel?.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
button.imageView?.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
let nextBtn = UIBarButtonItem(customView: button)
let spaceBtn = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
spaceBtn.width = -8// Change this value as per your need
self.navigationItem.rightBarButtonItems = [spaceBtn, nextBtn];
答案 2 :(得分:0)
添加UIBarButtonSystemItem.fixedSpace
将占用BarButtonItem
之前的额外空间。
let button = UIButton(type: .system)
button.setImage(UIImage(named: "ic_next_button"), for: .normal) // 22x22 1x, 44x44 2x, 66x66 3x
button.setTitle("Next", for: .normal)
button.sizeToFit()
button.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
button.titleLabel?.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
button.imageView?.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
let rightBarButton = UIBarButtonItem()
rightBarButton.customView = button
let negativeSpacer = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.fixedSpace, target: nil, action: nil)
negativeSpacer.width = -25;
self.navigationItem.setRightBarButtonItems([negativeSpacer, rightBarButton ], animated: false)