UIBarButtonItem: How can I find its frame?

前端 未结 16 835
忘掉有多难
忘掉有多难 2020-12-12 23:17

I have a button in a toolbar. How can I grab its frame? Do UIBarButtonItems not have a frame property?

16条回答
  •  有刺的猬
    2020-12-12 23:58

    Try this implementation:

    @implementation UIBarButtonItem(Extras)
    
    - (CGRect)frameInView:(UIView *)v {
    
        UIView *theView = self.customView;
        if (!theView.superview && [self respondsToSelector:@selector(view)]) {
            theView = [self performSelector:@selector(view)];
        }
    
        UIView *parentView = theView.superview;
        NSArray *subviews = parentView.subviews;
    
        NSUInteger indexOfView = [subviews indexOfObject:theView];
        NSUInteger subviewCount = subviews.count;
    
        if (subviewCount > 0 && indexOfView != NSNotFound) {
            UIView *button = [parentView.subviews objectAtIndex:indexOfView];
            return [button convertRect:button.bounds toView:v];
        } else {
            return CGRectZero;
        }
    }
    
    @end
    

提交回复
热议问题