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