UIBarButtonItem不能获取frame


在使用KxMenu这个厉害的控件做竖直列表的时候,发现UIBarButtonItem不能获取到frame,UIBarButtonItem是NSObject的子类,他不是一个uiresponed或者uiview的子类,所以他没有frame属性.

所以当我们要确定弹出框的位置的时候,

UIBarButtonItem *addContactItem = [[UIBarButtonItem alloc] initWithTitle:@"添加"
                                                                   style:UIBarButtonItemStylePlain
                                                                  target:self action:@selector(addContact:event:)];

 在设置action selector的时候多传递一个event参数,然后:

- (void)addContact:(UIBarButtonItem *)sender event:(UIEvent *) event {
     NSArray *menuItems = @[
                         [KxMenuItem menuItem:@"添加朋友" image:nil target:self action:@selector(addFriend)],
                         [KxMenuItem menuItem:@"添加群组" image:nil target:self action:@selector(addGroup)],
                         [KxMenuItem menuItem:@"添加班级" image:nil target:self action:@selector(addClass)],
                         [KxMenuItem menuItem:@"扫一扫" image:nil target:self action:@selector(scan)]
                         ];

    CGRect fromRect = [[event.allTouches anyObject] view].frame;

    fromRect.origin.y += 20;

    [KxMenu showMenuInView:self.view.window
                  fromRect:fromRect
                 menuItems:menuItems];
}

 

这样我们就可以定位到触发动作的uibarbuttonitem的位置,并正确弹出窗口。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM