Swift UIButton Размер изображения искажен в BarButtonItem - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу добавить UIButton к navigationItem.leftBarButtonItem.Я хочу, чтобы UIButton был 24x24px и уменьшил изображение.Но кнопка исказилась ... Если я поменяю UIImage на уменьшенное изображение, все будет хорошо.-> см. фото

Что я могу сделать, кроме scaleAspectFit ??

    let userProfilePic = UIButton()
    userProfilePic.frame = CGRect(x: 0, y: 0, width: 24, height: 24)
    userProfilePic.setImage(UIImage(named: "profile_icon.jpg"), for: .normal)
    userProfilePic.contentMode = .scaleAspectFit
    userProfilePic.clipsToBounds = true
    userProfilePic.layer.borderWidth = 0.5
    userProfilePic.layer.borderColor = UIColor.white.cgColor
    userProfilePic.layer.cornerRadius = (userProfilePic.frame.size.width) / 2
    userProfilePic.addTarget(self, action: #selector(goToSettings), for: UIControlEvents.touchUpInside)

    self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: userProfilePic)

enter image description hereСпасибо!

1 Ответ

0 голосов
/ 25 апреля 2018

Попробуйте этот код

Проблема появляется на ios 11+, UIBarButtonItem использует autolayout на ios 11+ другие кадры использования

     let userProfilePic = UIButton()
        userProfilePic.frame = CGRect(x: 0, y: 0, width: 24, height: 24)
        userProfilePic.setImage(UIImage(named: "profile_icon.jpg"), for: .normal)
        userProfilePic.contentMode = .scaleToFill
        userProfilePic.clipsToBounds = true
        userProfilePic.layer.borderWidth = 0.5
        userProfilePic.layer.borderColor = UIColor.white.cgColor
        userProfilePic.layer.cornerRadius = (userProfilePic.frame.size.width) / 2

      if #available(iOS 11, *) {
    userProfilePic.widthAnchor.constraint(equalToConstant: 24.0).isActive = true
    userProfilePic.heightAnchor.constraint(equalToConstant: 24.0).isActive = true
      }

      userProfilePic.addTarget(self, action: #selector(goToSettings), for: UIControlEvents.touchUpInside)
        self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: userProfilePic)
...