Swift-leftBarButtonItems的Love And Hate

今天写swift的时候碰到一个问题,添加一个navigationController,然后在左边连续放3个view。具体oc的代码是这样的。

- (void)createNavBar{
    //1. logo
    UIBarButtonItem *logo = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"logo"] style:UIBarButtonItemStyleDone target:nil action:nil];
    //2. 3个UIbarButtonItem
    NavItem *first = [NavItem makeItem];
    [first addtarget:self action:@selector(firstClick)];
    NavItem *second = [NavItem makeItem];
    [second addtarget:self action:@selector(secondClick)];
    NavItem *third = [NavItem makeItem];
    [third addtarget:self action:@selector(thirdClick)];

    firstItem= [[UIBarButtonItem alloc]initWithCustomView:first];
    secondItem = [[UIBarButtonItem alloc]initWithCustomView:second];
    thirdItem = [[UIBarButtonItem alloc]initWithCustomView:third];
    self.navigationItem.leftBarButtonItems = @[logo,firstItem,secondItem,thirdItem];
}

代码意思很明朗,就是在左边创建了3个barbuttonItem,效果如下,完美实现:

接下来我用swift代码写:

let left =  NaviBarItem.initXib();
        let fistItem = UIBarButtonItem(customView: left)
        let secondItem = UIBarButtonItem(customView: left)
        let thirdItem = UIBarButtonItem(customView: left)
        self.navigationItem.leftBarButtonItems = [fistItem,thirdItem]

按照道理,这是没有问题的,swift和oc用的是同一套API啊。测试,问题就来了。

貌似这三个view 都重叠在一起了。这个谁也没有办法预料这是什么情况。开发苹果突然觉得有点局限性,因为苹果不开源,我不知道方法的具体实现。因此不知道从哪儿入手去解决,只好凭着猜测去一个个测试。

所以我就这样写了:

let left =  NaviBarItem.initXib();
        var arr:NSMutableArray = []
        for index in 1...3{
            let width = left.frame.size.width
            let height = left.frame.size.width

            let leftItem = NaviBarItem.initXib()
            let w:CGFloat = CGFloat(index) * width
            leftItem.frame = CGRectMake(w,height,120,40)
            var item = UIBarButtonItem(customView: leftItem)
            arr.addobject(item)
        }
        self.navigationItem.leftBarButtonItems = arr as [AnyObject]

设置3个view的坐标。测试结果:
基本上一样,可是为什么会发生这样的现象?真的很疑惑啊,如果有大神知道的话,请留个言告诉我一下。

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...