iOS11でUIBarButtonItemのサイズがずれる


メンテナンスしていなかったアプリのUIBarButtonItemのサイズがやたらおかしくなっていたことに気づいた。

原因

UIBarButtonItemのレイアウト設定がautolayoutに対応したのが原因のよう

解決策

 let widthConstraint = button.widthAnchor.constraint(equalToConstant: 32)
 let heightConstraint = button.heightAnchor.constraint(equalToConstant: 32)
 heightConstraint.isActive = true
 widthConstraint.isActive = true
NSLayoutConstraint * widthConstraint = [customButton.widthAnchor constraintEqualToConstant:40];
NSLayoutConstraint * HeightConstraint =[customButton.heightAnchor constraintEqualToConstant:40];
[widthConstraint setActive:YES];
[HeightConstraint setActive:YES];

UIBarButtonItem* customBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:customButton];
self.navigationItem.leftBarButtonItem = customBarButtonItem;

このように縦と横の制約を追加