gpt4 book ai didi

iphone - 找出窗口中的 UIBarButtonItem 框架?

转载 作者:IT老高 更新时间:2023-10-28 11:27:28 25 4
gpt4 key购买 nike

UIBarButtonItem 没有扩展 UIView,所以没有什么像 frame 属性。

但是有什么方法可以让我获得相对于应用程序 UIWindowCGRect 框架?

最佳答案

你喜欢用private API年代?如果是,

UIView* view = thatItem.view;
return [view convertRect:view.bounds toView:nil];

当然,在瞄准 AppStore 时没有人想要这个。一个更不可靠的方法,也使用了未记录的特性,但会通过Apple的测试,是循环遍历 subview 以查找相应的按钮项。

NSMutableArray* buttons = [[NSMutableArray alloc] init];
for (UIControl* btn in theToolbarOrNavbar.subviews)
if ([btn isKindOfClass:[UIControl class]])
[buttons addObject:btn];
UIView* view = [buttons objectAtIndex:index];
[buttons release];
return [view convertRect:view.bounds toView:nil];

index.items 数组中条形项目的索引,在删除所有空白项目后。这假设按钮按升序排列,但可能不是。更可靠的方法是排序 buttons 数组增加.origin.x 值。当然,这仍然假设条形按钮项必须继承 UIControl 类,并且是工具栏/导航栏的直接 subview ,这又可能不是。


如您所见,在处理未记录的功能时存在很多不确定性。但是,您只是想在手指下弹出一些东西对吗? UIBarButtonItem 的 .action 可以是表单的选择器:

-(void)buttonClicked:(UIBarButtonItem*)sender event:(UIEvent*)event;

注意 event 参数——你可以通过

获得触摸的位置
[[event.allTouches anyObject] locationInView:theWindow]

或按钮 View

[[event.allTouches anyObject] view]

因此,您无需迭代 subview 或使用未记录的功能来完成您想做的事情。

关于iphone - 找出窗口中的 UIBarButtonItem 框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2994354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com