Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在swift中将UIImageView添加到导航栏?_Swift_Uinavigationcontroller_Uiimageview - Fatal编程技术网

如何在swift中将UIImageView添加到导航栏?

如何在swift中将UIImageView添加到导航栏?,swift,uinavigationcontroller,uiimageview,Swift,Uinavigationcontroller,Uiimageview,我有这样一段代码,它使用UIImageView在UIImage周围添加了一个圆形边框,并且我使用UIApgestureRecognitizer让用户点击按钮: var profilePicture = UIImageView() func setupUserProfileButton() { let defaultPicture = UIImage(named: "profilePictureSmall") profilePicture = UIImageView(image:

我有这样一段代码,它使用UIImageView在UIImage周围添加了一个圆形边框,并且我使用UIApgestureRecognitizer让用户点击按钮:

var profilePicture = UIImageView()
func setupUserProfileButton() {

    let defaultPicture = UIImage(named: "profilePictureSmall")
    profilePicture = UIImageView(image: defaultPicture)
    profilePicture.layer.cornerRadius = profilePicture.frame.width / 2
    profilePicture.clipsToBounds = true
    profilePicture.layer.borderColor = UIColor.black.cgColor
    profilePicture.layer.borderWidth = 1

    // Letting users click on the image
    profilePicture.isUserInteractionEnabled = true
    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(profilePictureTapped))
    profilePicture.addGestureRecognizer(tapGesture)

}
如何将其添加到导航栏的左侧?可能吗?如果我可以将ImageView作为barButtonItem添加到导航栏中,我认为不需要点击手势,所以您可以忽略这一点。我发现了一些类似的问题,但它们都在目标C中,我尝试的都不起作用

以下是我根据一个答案得出的结论:

import UIKit
import Firebase

class CreateStoryPage: BaseAndExtensions {

    let userProfileButton = UIButton(type: .custom)

    override func viewDidLoad() {
        super.viewDidLoad()

        // Call all the elements
        setupUserProfileButton()

    }
    // MARK:- Setups
    // Setup the user profile button
    func setupUserProfileButton() {

        userProfileButton.setImage(#imageLiteral(resourceName: "profilePictureSmall.png"), for: .normal)
        userProfileButton.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
        userProfileButton.addTarget(self, action: #selector(profilePictureTapped), for: .touchUpInside)

        let userProfileView = UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
        userProfileView.layer.cornerRadius = 14
        userProfileView.backgroundColor = .red

        userProfileView.addSubview(userProfileButton)

        let leftNavBarItem = UIBarButtonItem(customView: userProfileView)
        self.navigationItem.setLeftBarButton(leftNavBarItem, animated: true)


    }

    // if user taps on profile picture
    @objc func profilePictureTapped() {

        let userProfilePage = UserProfilePage()
        present(userProfilePage, animated: true, completion: nil)

    }
}
试试这个

private func setupRightItem() {
    let userProfileButton = UIButton(type: .custom)
    userProfileButton.imageView?.contentMode = .scaleAspectFill
    userProfileButton.clipsToBounds = true
    userProfileButton.addTarget(self, action: #selector(profilePictureTapped), for: .touchUpInside)
    userProfileButton.setImage(#imageLiteral(resourceName: "profilePictureSmall.png"), for: .normal)
    userProfileButton.frame = CGRect(x: 0, y: 0, width: 30, height: 30)

    self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: userProfileButton)

    userProfileButton.widthAnchor.constraint(equalToConstant: 30).isActive = true
    userProfileButton.heightAnchor.constraint(equalToConstant: 30).isActive = true
  }

  @objc private func goProfile() {
    /// -> Action
  }

可能重复的评论不用于扩展讨论;这段对话已经结束。
private func setupRightItem() {
    let userProfileButton = UIButton(type: .custom)
    userProfileButton.imageView?.contentMode = .scaleAspectFill
    userProfileButton.clipsToBounds = true
    userProfileButton.addTarget(self, action: #selector(profilePictureTapped), for: .touchUpInside)
    userProfileButton.setImage(#imageLiteral(resourceName: "profilePictureSmall.png"), for: .normal)
    userProfileButton.frame = CGRect(x: 0, y: 0, width: 30, height: 30)

    self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: userProfileButton)

    userProfileButton.widthAnchor.constraint(equalToConstant: 30).isActive = true
    userProfileButton.heightAnchor.constraint(equalToConstant: 30).isActive = true
  }

  @objc private func goProfile() {
    /// -> Action
  }