Программно добавить изображение поверх кнопки с ограничениями (Swift) - PullRequest
0 голосов
/ 31 января 2019

Такое ощущение, что мне не хватает чего-то простого, но я не могу понять это.Я пытаюсь добавить изображение поверх кнопки программно.В этом случае логотип 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 

1 Ответ

0 голосов
/ 31 января 2019

Вы можете рассчитать соотношение сторон логотипа и использовать его в сочетании с высотой изображения

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

Таким образом, даже если вы измените размер кнопки, ширина логотипа также изменится при правильном соотношении

...