
今天写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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)