【问题标题】:navigation bar button item is bigger than the frame i set导航栏按钮项大于我设置的框架
【发布时间】:2021-04-09 06:45:32
【问题描述】:

我不知道我的代码有什么问题,或者我做了什么导致了这种情况我花了半个小时试图弄清楚我的代码有什么问题,但我不知道,我打电话给funcviewDidLoad()

func setupNavBarBtn(){
        
        let backBtn = UIButton(type: .system)
        backBtn.setImage(#imageLiteral(resourceName: "cellarrow").withRenderingMode(.alwaysOriginal), for: .normal)
        backBtn.contentMode = .scaleAspectFit
        backBtn.frame = CGRect(x: 0, y: 0, width: 30, height: 30)

        let callBtn = UIButton(type: .system)
        callBtn.setImage(#imageLiteral(resourceName: "Call").withRenderingMode(.alwaysOriginal), for: .normal)
        callBtn.contentMode = .scaleAspectFit
        callBtn.frame = CGRect(x: 0, y: 0, width: 30, height: 30)

        self.navigationItem.leftBarButtonItems = [UIBarButtonItem(customView: backBtn), UIBarButtonItem(customView: callBtn)]

}

【问题讨论】:

  • 看看this answer是否有帮助。
  • 移动按钮 x 和 y 以创建一些不工作的空间
  • 在分配给框架之前设置 yourButton.translatesAutoresizingMaskIntoConstraints = true。
  • @RajaKishan 我得到了与您在上面看到的结果相同的结果

标签: ios swift xcode uinavigationcontroller navigationbar


【解决方案1】:

你应该创建 UIBarButtonItem 而不是 UIButton:

let backBtn = UIBarButtonItem(image:UIImage(named: "cellarrow.png"), style: .plain, target: nil, action: nil)
let callBtn = UIBarButtonItem(image:UIImage(named: "Call.png"), style: .plain, target: nil, action: nil)
self.navigationItem.leftBarButtonItems = [backBtn,callBtn]

条形按钮的大小最好是20x20

【讨论】:

  • 这是导致此问题的 Btn Img 大小
  • 我不知道。我认为 UIButton 不适合在导航栏中使用。 UIBarButton 更有可能管理正确的大小和行为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多