即使存在约束,UIButton图像也会自动调整大小

时间:2019-01-19 00:52:40

标签: ios swift uiview uibutton nslayoutconstraint

我有一个小问题,我可能无法解决。我有一个以编程方式添加的uibutton。我向该按钮添加一个UIImage。我只是添加基本约束,但是由于某些原因,在屏幕上运行时,它倾向于缩小为较小的尺寸。

以下是我生成按钮的代码:

var shareButton: UIButton!

    func addShareButton() {
        shareButton = UIButton()
        shareButton.autoresizesSubviews = false
        shareButton.clipsToBounds = true
        shareButton.translatesAutoresizingMaskIntoConstraints = false
        shareButton.adjustsImageWhenHighlighted = false
        shareButton.setImage(UIImage(named: "wshare"), for: .normal)
        shareButton.addTarget(self, action: #selector(shareButtonPressed), for: .touchDown)
        shareButton.addTarget(self, action: #selector(shareButtonReleased), for: .touchUpInside)
        view.addSubview(shareButton)
    }

    func addConstraints() {
        NSLayoutConstraint.activate([
            // Share Button
            shareButton.widthAnchor.constraint(equalToConstant: 60),
            shareButton.heightAnchor.constraint(equalToConstant: 60),
            shareButton.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -15),
            shareButton.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -25),
            ])
    }

    override func updateViewConstraints() {
        addConstraints()
        super.updateViewConstraints()
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        addShareButton()
    }

它生成的是: enter image description here

较大的框应该是60x60的实际尺寸,但它神奇地缩小为32x32。

您能帮我指出问题吗?我知道我很想念某些东西,但是我无法回避它。

1 个答案:

答案 0 :(得分:1)

我个人喜欢将对象分开。尽管UIButton具有setImage(:UIImage)方法,但我更喜欢创建一个UIButton,然后向其中添加自己的UIImageView,然后添加自己的UIImage。所以,在层级

-- UIButton
    -- UIImageView
        -- UIImage

这样,您可以指定特定范围以及与UIImageView相关的任何其他变量。我发现这种方法更加具体,尤其是在必须更改UIImageView的情况下。