Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
Ios 中间出现的右栏项目_Ios_Swift_Xcode_Uinavigationitem - Fatal编程技术网

Ios 中间出现的右栏项目

Ios 中间出现的右栏项目,ios,swift,xcode,uinavigationitem,Ios,Swift,Xcode,Uinavigationitem,RightBarButtonim未显示在导航栏的右侧。我希望导航栏与“应用商店”中的导航栏相似 我在故事板和代码中尝试过这样做,设置图像内容模式,剪裁到边界,并给它一个框架 我也一直在网上寻找解决方案,但没有一个适合我。任何帮助或建议都将不胜感激,谢谢 以下是一些屏幕截图: 添加userimage属性,使其可在ViewController中访问 将makeRound()函数调用添加到viewWillLayoutSubviews() 更新makeRound()函数以生成一个圆 添加方法以添加必要

RightBarButtonim未显示在导航栏的右侧。我希望导航栏与“应用商店”中的导航栏相似

我在故事板和代码中尝试过这样做,设置图像内容模式,剪裁到边界,并给它一个框架

我也一直在网上寻找解决方案,但没有一个适合我。任何帮助或建议都将不胜感激,谢谢

以下是一些屏幕截图:

  • 添加
    userimage
    属性,使其可在ViewController中访问
  • makeRound()
    函数调用添加到
    viewWillLayoutSubviews()
  • 更新makeRound()函数以生成一个圆
  • 添加方法以添加必要的约束
  • 为UIImageView设置手势识别器并为其实现
  • 使用方法调用更新
    viewDidLoad()
  • 添加
    userimage
    属性,使其可在ViewController中访问
  • makeRound()
    函数调用添加到
    viewWillLayoutSubviews()
  • 更新makeRound()函数以生成一个圆
  • 添加方法以添加必要的约束
  • 为UIImageView设置手势识别器并为其实现
  • 使用方法调用更新
    viewDidLoad()

  • 当我为我的
    uibarbuttoneim
    使用一个非常大的图像时,我遇到了同样的问题

    一旦我将图像调整到较小的尺寸,它就被适当地放置在导航栏的右侧。看起来你也有同样的问题

    或者,由于从iOS 11开始,导航栏使用自动布局,因此替换行

    userimage.frame = CGRect(x: 60, y: 0, width: 50, height: 50)
    
    使用下面的方法也可以做到这一点:

    userimage.widthAnchor.constraint(equalToConstant: 50).isActive = true
    userimage.heightAnchor.constraint(equalToConstant: 50).isActive = true
    

    当我为我的
    uibarbuttoneim
    使用一个非常大的图像时,我遇到了同样的问题

    一旦我将图像调整到较小的尺寸,它就被适当地放置在导航栏的右侧。看起来你也有同样的问题

    或者,由于从iOS 11开始,导航栏使用自动布局,因此替换行

    userimage.frame = CGRect(x: 60, y: 0, width: 50, height: 50)
    
    使用下面的方法也可以做到这一点:

    userimage.widthAnchor.constraint(equalToConstant: 50).isActive = true
    userimage.heightAnchor.constraint(equalToConstant: 50).isActive = true
    

    您想分享当前对此问题的看法吗?@FaysalAhmed您的意思是什么?这是项目中唯一的视图。默认viewcontrollerThanks,但这也不起作用@FaysalAhmed。是否要共享此问题的当前视图?@FaysalAhmed您的意思是什么?这是项目中唯一的视图。默认的viewcontrollerThanks,但是@FaysalAhmed也不起作用。
    func setupConstraints() {
        navigationItem.searchController = searchController
        navigationItem.hidesSearchBarWhenScrolling = false
        guard let navigationBar = self.navigationController?.navigationBar else { return }
        navigationBar.addSubview(userimage)
        userimage.clipsToBounds = true
        userimage.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            userimage.rightAnchor.constraint(equalTo: navigationBar.rightAnchor, constant: -16),
            userimage.bottomAnchor.constraint(equalTo: navigationBar.bottomAnchor, constant: -12),
            userimage.heightAnchor.constraint(equalToConstant: 40),
            userimage.widthAnchor.constraint(equalTo: userimage.heightAnchor)
        ])
    }
    
        func setUpGestureRecognizer() {
            let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(profile))
            userimage.isUserInteractionEnabled = true
            userimage.addGestureRecognizer(tapGestureRecognizer)
        }
    
        @objc func profile() {
            // Your implementation
        }
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Setup constraints
            setupConstraints()
            setUpGestureRecognizer()
        }
    
    userimage.frame = CGRect(x: 60, y: 0, width: 50, height: 50)
    
    userimage.widthAnchor.constraint(equalToConstant: 50).isActive = true
    userimage.heightAnchor.constraint(equalToConstant: 50).isActive = true