Кнопка Constrain с собственной шириной - PullRequest
0 голосов
/ 09 апреля 2020

Действительно борется с constrain моим buttons.

Все, что я хочу, это настроить мои 2 buttons на height из 35 , и их width должно быть тем, что им нужно. Прямо сейчас это выглядит так (левая и правая кнопки):

enter image description here

Вот как я их настроил:

let communityButton: UIButton = {
    let v = UIButton()
    v.setImage(UIImage(systemName: "person.3.fill"), for: .normal)
    v.tintColor = UIColor.darkCustom
    v.imageView?.contentMode = .scaleAspectFill
    v.contentHorizontalAlignment = .fill
    v.contentVerticalAlignment = .fill
    v.translatesAutoresizingMaskIntoConstraints = false
    v.addTarget(self, action: #selector(communityButtonTapped), for: .touchUpInside)
    return v
}()

let profileButton: UIButton = {
    let v = UIButton()
    v.setImage(UIImage(systemName: "person.fill"), for: .normal)
    v.tintColor = UIColor.darkCustom
    v.imageView?.contentMode = .scaleAspectFill
    v.contentHorizontalAlignment = .fill
    v.contentVerticalAlignment = .fill
    v.translatesAutoresizingMaskIntoConstraints = false
    v.addTarget(self, action: #selector(profileButtonTapped), for: .touchUpInside)
    return v
}()

Ограничения:

//contrain communityButton
communityButton.centerYAnchor.constraint(equalTo: bottomBar.centerYAnchor),
communityButton.centerXAnchor.constraint(equalTo: bottomBar.centerXAnchor, constant: -view.frame.width/3.5),
communityButton.heightAnchor.constraint(equalToConstant: 35),

// constrain profileButton
profileButton.centerYAnchor.constraint(equalTo: bottomBar.centerYAnchor),
profileButton.centerXAnchor.constraint(equalTo: bottomBar.centerXAnchor, constant: view.frame.width/3.5),
profileButton.heightAnchor.constraint(equalToConstant: 35),

Какой правильный способ ограничения здесь?

1 Ответ

1 голос
/ 09 апреля 2020

Вам может потребоваться сообщить autoLayout, что вы хотите, чтобы ширина была гибкой. Вы можете сделать это, добавив эту строку в оба определения кнопок: -

// Replace "myButton" with your buttons name in your case "v"
 myButton.autoresizingMask = [.flexibleWidth] 

Правки: - Поскольку вы используете системные изображения, если вы хотите, чтобы ваша кнопка выглядела больше, чем Вы должны увеличить размер шрифта в конфигурации вашего изображения. Отредактируйте ваши изображения, добавив конфигурацию с вашими предпочтительными размерами шрифта.

Например: -


let communityButton: UIButton = {
    let v = UIButton()
//----
// NB: - Change the font size for bigger icons and viceversa
let imageSymbolConfiguration = UIImage.SymbolConfiguration(pointSize: 50, weight: .regular, scale: .large)
v.setImage(UIImage(systemName: "person.3.fill", withConfiguration: imageSymbolConfiguration), for: .normal)

// -----

    return v
}()


let profileButton: UIButton = {
    let v = UIButton()
    // ----
// NB: - Change the font size for bigger icons and viceversa
let imageSymbolConfiguration = UIImage.SymbolConfiguration(pointSize: 50, weight: .regular, scale: .large)
v.setImage(UIImage(systemName: "person.fill", withConfiguration: imageSymbolConfiguration), for: .normal)
     // ----
    return v
}()


Объяснение: -

Из официальной документации

«Объекты конфигурации изображения символа включают в себя такие детали, как размер точки, масштаб, стиль текста, вес и шрифт, применяемые к изображению символа. Система использует эти данные, чтобы определить, какой вариант изображения использовать и как масштабировать или стилизовать изображение. изображение. "

...