gpt4 book ai didi

ios - 快速更改 UINavigationBar 中 UIBarButtonItem 的位置

转载 作者:行者123 更新时间:2023-11-28 11:09:45 25 4
gpt4 key购买 nike

我正在自定义一个导航栏,其中包含 y 位置低于默认值的项目。我尝试了很多方法:

  • setBackButtonBackgroundVerticalPositionAdjustment:
  • 设置自定义 View 的CGRectOffset
  • UIBarButtonItem.appearance().setTitlePositionAdjustment(UIOffset.init(水平: X, 垂直: Y), forBarMetrics: UIBarMetrics.Default)

他们让项目出现在正确的位置,但当我点击/触摸它们时我无法触发任何 Action 。我想因为我没有触及酒吧项目,它们只是这些项目的外观/复制 View /图像。

enter image description here

谁能帮我解决这个问题?

我的代码:

let lblTitle = UILabel(frame: CGRectMake(0, 0, 100, 28))
lblTitle.text = FMLStringLocale("APP_name")
lblTitle.textColor = UIColor.whiteColor()
lblTitle.font = ROBOTO_THIN_24
lblTitle.textAlignment = NSTextAlignment.Left
lblTitle.backgroundColor = UIColor.clearColor()
lblTitle.transform = CGAffineTransformMakeTranslation(6, 11)

let lblTitleContainer = UIView(frame: lblTitle.frame)
lblTitleContainer.addSubview(lblTitle)
let leftTitle = UIBarButtonItem(customView: lblTitleContainer)
navigationItem.leftBarButtonItem = leftTitle

let rightView = UIView(frame: CGRectMake(0, 0, 134, 22))
rightView.backgroundColor = UIColor.whiteColor()
rightView.transform = CGAffineTransformMakeTranslation(0, 18)

let imvUSFlag = UIImageView(image: UIImage(named: "icon_us"))
imvUSFlag.frame = CGRectMake(0, 0, 19, 13)
imvUSFlag.transform = CGAffineTransformMakeTranslation(-2, 20)

rightView.addSubview(imvUSFlag)

let switcher = UISwitch(frame: CGRectMake(imvUSFlag.frame.maxX - 5, 12, 31, 16))
switcher.setOn(false, animated: false)
switcher.addTarget(self, action: Selector("tapToChangeLanguage:"), forControlEvents: UIControlEvents.ValueChanged)
switcher.transform = CGAffineTransformMakeScale(0.5, 0.5)

// let switchContainer = UIView(frame: switcher.frame)
// switchContainer.addSubview(switcher)

rightView.addSubview(switcher)

let imvFRFlag = UIImageView(image: UIImage(named: "icon_france"))
imvFRFlag.frame = CGRectMake(switcher.frame.maxX + 6, 0, 19, 14)
imvFRFlag.transform = CGAffineTransformMakeTranslation(0, 20)

rightView.addSubview(imvFRFlag)

let btnMenu = UIButton()
btnMenu.setImage(UIImage(named : "icon_menu"), forState: .Normal)
btnMenu.frame = CGRectMake(imvFRFlag.frame.maxX + 30, 0, 23, 21)
btnMenu.addTarget(self, action: "tapToMenu:", forControlEvents: UIControlEvents.TouchUpInside)
btnMenu.transform = CGAffineTransformMakeTranslation(0, 18)

rightView.addSubview(btnMenu)
rightView.transform = CGAffineTransformMakeTranslation(0, 18)

let rightViewItem = UIBarButtonItem(customView: rightView)

navigationItem.rightBarButtonItem = rightViewItem

navigationController?.navigationBar.barStyle = .BlackTranslucent
navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
navigationController?.navigationBar.shadowImage = UIImage()

最佳答案

你不能点击你的按钮 btnMenu 的原因是你将 btnMenu 放在它的父 View 的框架 右 View 。父 View 之外的 subview 无法接收触摸。

关于ios - 快速更改 UINavigationBar 中 UIBarButtonItem 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35873554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com