我对iOS开发完全不熟悉,我应该修复使用Swift 3.0和Xcode 8制作的iOS应用程序中的一些错误,它的工作方式几乎没问题。但是当我用Xcode 9和Swift 4.0打开它时,它显示出一些与之前不同的按钮。
以下是其中一个按钮的源代码。
let button: UIButton = UIButton.init(type: UIButtonType.custom)
//set image for button
button.setImage(UIImage(named: "menu.png"), for: UIControlState())
button.frame = CGRect(x: 0, y: 0, width: 30, height: 23)
let barButton = UIBarButtonItem(customView: button)
button.addTarget(self, action: #selector(ViewController.shareButtonPressed), for: UIControlEvents.touchUpInside)
self.navigationItem.leftBarButtonItem = barButton
此代码位于ViewDidLoad方法内。我的问题是当我删除时,
button.setImage(UIImage(named: "menu.png"), for: UIControlState())
它会消失按钮但是当我改变高度和宽度时,
button.frame = CGRect(x: 0, y: 0, width: 30, height: 23)
它什么都没改变。 我的问题是如何解决这个错误。任何建议,答案都非常感谢,如果给出的细节不够,请提及。谢谢!
答案 0 :(得分:8)
button.widthAnchor.constraint(equalToConstant: 30.0).isActive = true
button.heightAnchor.constraint(equalToConstant: 20.0).isActive = true
答案 1 :(得分:6)
从iOS 11开始,使用UIBarButtonItem
使用UIBarButtonItem(customView:)
添加到工具栏的视图现在使用自动布局进行布局。您应该在button
上添加大小限制。例如:
button.widthAnchor.constraintEqualToConstant(30.0).isActive = true
button.heightAnchor.constraintEqualToConstant(23.0).isActive = true
否则,自动布局将使用标题视图的内在内容大小,这可能与您的预期不同。
有关详细信息,请参阅WWDC 2017会话Updating your app for iOS 11。
答案 2 :(得分:0)