簡體   English   中英

通過約束以編程方式在按鈕上添加圖像(快速)

[英]Programmatically Add Image Over a Button with Constraints (Swift)

感覺好像我缺少一些簡單的東西,但是我無法弄清楚。 我試圖以編程方式在按鈕上添加圖像。 在這種情況下,自定義按鈕上有一個Facebook徽標。 我希望底部位於按鈕的左側,因此我將圖像的約束錨定到按鈕的左側。

但是,我不能對圖像施加適當的約束,因為按鈕的大小取決於電話屏幕的大小(設置為倍增器的寬度)而可變。 我以為只要將圖像內容模式設置為適合寬高比就可以解決這個問題,但是實際發生的是圖像的右側是根據其全尺寸設置的。

我該如何處理? 我以為也許我可以計算按鈕的高度,然后使用它來設置圖像的寬度。 我不確定該怎么做,而且感覺就像我錯過了一個更優雅的解決方案。 謝謝!

let customFacebookButton = UIButton(type: .system)

let facebookLogo: UIImageView = {
    let imageView = UIImageView(image: UIImage(named: "facebookLogo"))
        imageView.translatesAutoresizingMaskIntoConstraints = false
        imageView.contentMode = .scaleAspectFit
        return imageView
    }()

view.addSubview(facebookLogo)

facebookLogo.topAnchor.constraint(equalTo: customFacebookButton.topAnchor, constant: 10).isActive = true
facebookLogo.bottomAnchor.constraint(equalTo: customFacebookButton.bottomAnchor, constant: -10).isActive = true
facebookLogo.leadingAnchor.constraint(equalTo: customFacebookButton.leadingAnchor, constant: 10).isActive = true


// Custom Button Constraints in case it's helpful

customFacebookButton.topAnchor.constraint(equalTo: 
loginTextViewTitle.bottomAnchor, constant: 30).isActive = true
customFacebookButton.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor).isActive = true
customFacebookButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
customFacebookButton.widthAnchor.constraint(equalTo: view.safeAreaLayoutGuide.widthAnchor, multiplier: 0.8).isActive = true 

您可以計算徽標的寬高比,並將其與圖像的高度結合使用

if let image = facebookLogo.image
{
    let ratio = image.size.width / image.size.height
    facebookLogo.widthAnchor.constraint(equalTo: facebookLogo.heightAnchor, multiplier: ratio).isActive = true
}

這樣,即使您調整按鈕的大小,徽標的寬度也將以正確的比例調整大小

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM