如何使用Swift 3.0使用Swift 3.0更改iOS应用程序中按钮的高度和宽度

时间:2017-10-19 03:22:17

标签: ios xcode9 swift4

我对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)

它什么都没改变。 我的问题是如何解决这个错误。任何建议,答案都非常感谢,如果给出的细节不够,请提及。谢谢!

3 个答案:

答案 0 :(得分:8)

斯普利特4:

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)

您可以使用Xcode中的情节提要自定义按钮的宽度和高度。只需选择您的按钮并打开此窗口即可。 Constraint Layout

之后,只需添加高度限制即可。

相关问题