Swift-leftBarButtonItems的Love And Hate

Swift-leftBarButtonItems的Love And Hate,第1张

概述今天写swift的时候碰到一个问题,添加一个navigationController,然后在左边连续放3个view。具体oc的代码是这样的。 - (void)createNavBar{ //1. logo UIBarButtonItem *logo = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"logo"

今天写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的坐标。测试结果:
基本上一样,可是为什么会发生这样的现象?真的很疑惑啊,如果有大神知道的话,请留个言告诉我一下。

总结

以上是内存溢出为你收集整理的Swift-leftBarButtonItems的Love And Hate全部内容,希望文章能够帮你解决Swift-leftBarButtonItems的Love And Hate所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1084895.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存