注册 登录
主题 : 自定义navigationController的 leftBarButtonItems的问题
级别: 新手上路
UID: 196892
精华: 0
发帖: 2
可可豆: 11 CB
威望: 11 点
在线时间: 6(时)
注册时间: 2012-12-29
最后登录: 2017-11-21
0 楼:  发表于: 2017-06-23 15:11    发自: Web Page

自定义navigationController的 leftBarButtonItems的问题   

看图

自定义navigationController的 leftBarButtonItems,在当前界面调用UIAlertController时出现leftBarButtonItems 整体下移:


        self.navigationController?.navigationBar.tintColor = UIColor(colorLiteralRed: 1, green: 1, blue: 1, alpha: 1)
        self.navigationItem.hidesBackButton = true
        self.navigationController?.interactivePopGestureRecognizer?.delegate = self as? UIGestureRecognizerDelegate
        let back = UIBarButtonItem(image: UIImage(named:"img_back"), style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.back))
        back.title = ""
        let spacer = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil,action: nil)
        spacer.width = -10;
        self.navigationItem.leftBarButtonItems = [spacer,back]


       let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
        let one = UIAlertAction(title: Utility.findLocalString("单次定时"), style: UIAlertActionStyle.default, handler: { action in
            let contr = SinglePeriodSchdViewController()
            contr.mEditMode = EditMode.New
            contr.mPeriodType = SchdPeriodType.Single
            contr.mNodeId = self.mNodeId
            contr.mDevice = self.mDevice
            self.navigationController?.pushViewController(contr, animated: true)
        })
        alert.addAction(one)
        let mutil = UIAlertAction(title: Utility.findLocalString("多次定时"), style: .default, handler: { action in
            let contr = SinglePeriodSchdViewController()
            contr.mEditMode = EditMode.New
            contr.mPeriodType = SchdPeriodType.Period
            contr.mNodeId = self.mNodeId
            contr.mDevice = self.mDevice
            self.navigationController?.pushViewController(contr, animated: true)
        })
        alert.addAction(mutil)
        let cancel = UIAlertAction(title: Utility.findLocalString("cancel"), style: .cancel, handler: { action in
           
        })
        alert.addAction(cancel)
        self.present(alert, animated: true, completion: nil)

有筒子 遇到这种问题没,求指教


关键词: ios 问题
级别: 新手上路
UID: 610892
精华: 0
发帖: 4
可可豆: 13 CB
威望: 13 点
在线时间: 26(时)
注册时间: 2017-04-09
最后登录: 2018-05-11
1 楼:  发表于: 2018-04-12 16:52    发自: Web Page
我曹,我也遇到了。。。还没找到答案呢,估计是版本适配问题,iOS11 是正常的,但之前的版本就下移了
级别: 新手上路
UID: 610892
精华: 0
发帖: 4
可可豆: 13 CB
威望: 13 点
在线时间: 26(时)
注册时间: 2017-04-09
最后登录: 2018-05-11
2 楼:  发表于: 2018-04-13 10:43    发自: Web Page
大兄弟,我找解决办法了,虽然你可能用不到了但后来者可能看到,我就直接在你这回复了哈哈哈。。。
我之前出现这个问题的原因是在自定义UINavigationViewController 通过代理方法直接统一设置返回的按钮,替换为自定义图片。
起初使用的方法是:  let leftBarButtonItem = UIBarButtonItem(title:"", style: .plain, target: self, action: #selector(leftBarButtonItemAction))
    leftBarButtonItem.image = UIImage(named:"nav_back_leftArrow")?.withRenderingMode(.alwaysOriginal)
此时在未调用UIAlertController所有版本是正常显示的,但在iOS11 以下版本界面调用UIAlertController,造成leftBarButtonItem向下偏移,bug图与楼主贴的图情形是一样的。
解决办法:
let leftBarButtonItem = UIButton(frame:CGRect(x: 0, y: 0, width: 10*kHeightScale, height: 20*kHeightScale))
     leftBarButtonItem.setImage(UIImage(named:"nav_back_leftArrow")?.withRenderingMode(.alwaysOriginal), for: .normal)
    leftBarButtonItem.addTarget(self, action: #selector(leftBarButtonItemAction), for: .touchUpInside)

            viewController.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: leftBarButtonItem)

通过自定义button的方式来替换掉直接设置UIBarButtonItem


图片:2018-04-13 at 上午10.42.png

本站内容均为本站转发,已尽可能注明出处。因未能核实来源或转发内容图片有权利瑕疵的,请及时联系本站,本站会第一时间进行修改或删除。 QQ : 3442093904

描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部