0
在使用不同的帧和图像值返回到VC时调整UIBarButtonItem大小时遇到问题。对于selectedR = 1在Swift4中,替换navigationItem.leftBarButtonItem调整大小无用
编辑回viewDidLoad中具有不同的值selectedR和图像
var selectedR = 1
var leftFrame = CGRect()
var leftImage = UIImage()
override func viewDidLoad() {
super.viewDidLoad()
if selectedR == 0
{
leftFrame = CGRect(x: 0, y: 0, width: 33, height: 33)
leftImage = UIImage(named: “pic-0”)!
}
else if selectedR == 1
{
leftFrame = CGRect(x: 0, y: 0, width: 79, height: 33)
leftImage = UIImage(named: "pic-1")!
}
else if selectedR == 2
{
leftFrame = CGRect(x: 0, y: 0, width: 34, height: 33)
leftImage = UIImage(named: "pic-2”)!
}
let cButton = UIButton(frame: leftFrame)
cButton.setImage(leftImage, for: UIControlState())
cButton.addTarget(self.revealViewController(), action: #selector(SWRevealViewController.revealToggle(_:)), for: .touchUpInside)
cButton.contentMode = UIViewContentMode.scaleAspectFit
let leftItem = UIBarButtonItem(customView: cButton)
self.navigationItem.leftBarButtonItem = leftItem
}
第一次完美的大小炸毁,扭曲和设置leftFrame尺寸不兑现。
这一切都在迅速3完美,但迅速4它遍布各地。任何帮助或建议将不胜感激。
为什么viewDidLoad被多次调用? – beyowulf
从我所知道的是我使用的框架(SWRevealViewController)是如何工作的。并且在Swift 3中工作得很完美。这就是说,很可能确实是这个问题。你怎么看? –
我只是想确保你没有手动调用系统应该处理的'viewDidLoad'。我的猜测是iOS 10和11之间的一个主要变化是现在栏按钮项由自动布局引擎布置。然而,这种变化应该是向后兼容的。你可以试试'cButton.widthAnchor.constraint(equalToConstant:leftFrame.width).isActive = true; cButton.heightAnchor.constraint(equalToConstant:leftFrame.height).isActive = true'你可以在这里看到更多关于它的信息https://developer.apple.com/videos/play/wwdc2017/204/ – beyowulf