0
フレームとイメージの値が異なるVCに戻すときにUIBarButtonItemのサイズ変更に問題が発生しました。 selectedR = 1Swift4で、navigationItem.leftBarButtonItemの置き換えにより不要なサイズが変更される
異なるselectedR値と画像と裏面のviewDidLoadに入ってくるため
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)の仕組みです。そして、スウィフト3で完璧に働いた。それは確かに非常によく問題になる可能性がある。あなたの考えは? –
私は、あなたが手動で 'viewDidLoad'を呼び出すのではなく、システムが扱うべきものであることを確認したいだけです。私の推測は、iOS 10と11の間の大きな変化の1つで、自動レイアウトエンジンによってバーボタン項目が配置されています。その変更は下位互換性があるはずです。 '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