升级到Swift 4之后,我用来添加自定义UIBarButtonItem
的代码不再有效,而是以一种特殊的方式挤压图像:
// In viewDidLayoutSubviews
if let backButton = Utils.createBackButton(color: .white, target: self, selector: #selector(LoginViewController.backPressed)) {
navigationItem.leftBarButtonItem = backButton
print("navigation button width", backButton)
}
// In Utils.swift
class func createBackButton(color: BackArrowColors, target: UIViewController, selector: Selector) -> UIBarButtonItem? {
var backImage = UIImage()
if color == .white {
backImage = UIImage(named: "back-arrow-white.png")!
} else if color == .black {
backImage = UIImage(named: "back-arrow-black.png")!
} else {
return nil
}
let backButton: UIButton = UIButton(type: UIButtonType.custom)
backButton.frame = CGRect(x: 0, y: 0, width: 35, height: 35)
backButton.contentMode = UIViewContentMode.scaleAspectFit
backButton.setImage(backImage, for: .normal)
backButton.addTarget(target, action: selector, for: .touchUpInside)
backButton.imageEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 10)
let leftBarButtonItem: UIBarButtonItem = UIBarButtonItem(customView: backButton)
return leftBarButtonItem
}
框架似乎是正确的,在控制台中我得到以下控制台消息:
navigation button width <UIBarButtonItem: 0x7fb3d7c0d010> view=<UIButton: 0x7fb3d7c20ae0; frame = (0 0; 35 35); opaque = NO; layer = <CALayer: 0x60c000238b40>>
有什么想法吗?谢谢你们!