gpt4 book ai didi

ios - UIActionSheet showInView 方法如何插入其 View ?

转载 作者:行者123 更新时间:2023-11-29 04:05:44 31 4
gpt4 key购买 nike

我正在尝试实现我自己的 CustomUIActionSheet。

我几乎可以工作了,但我不知道 showInView 方法是如何工作的。

  • (void)showInView:(UIView *) View

给出一个 View ,此方法能够将其 View 放在每个 View 的前面(也许将其添加到窗口?),但它也能够根据要添加的 View 设置旋转。

我尝试将其添加到我作为参数接收的 View 的窗口中。

CGFloat startPosition = view.window.bounds.origin.y + view.window.bounds.size.height;

self.frame = CGRectMake(0, startPosition, view.window.bounds.size.width, [self calculateSheetHeight]);

[view.window addSubview:self];

self.blackOutView = [self buildBlackOutViewWithFrame:view.window.bounds];
[view.window insertSubview:self.blackOutView belowSubview:self];

通过这样做,所有工作都有效,除了当我以横向方式呈现操作表时,操作表从右侧出现(因为 Windows 系统引用它始终相同)

我还尝试将其添加到 View 窗口的 rootViewController 中,如下所示:

UIView * view = view.window.rootViewController.view;

CGFloat startPosition = view.bounds.origin.y + view.bounds.size.height;

self.frame = CGRectMake(0, startPosition, view.bounds.size.width, [self calculateSheetHeight]);

[view addSubview:self];

self.blackOutView = [self buildBlackOutViewWithFrame:view.bounds];
[view insertSubview:self.blackOutView belowSubview:self];

但是,它在横向上失败了,它没有添加任何东西,或者至少,我看不到它

所以,我的问题是,有什么线索可以告诉我如何将 View 添加到在两个方向上工作的层次结构顶部吗?

非常感谢!

最佳答案

在阅读了一些自定义警报 View 和其他位于层次结构顶部的 ui 组件的源代码后,我找到了一个可行的解决方案。

在窗口的第一个 subview 中添加 View :

UIView * topView = [[view.window subviews] objectAtIndex:0];

所以最终的代码是

UIView * topView = [[view.window subviews] objectAtIndex:0];

CGFloat startPosition = topView.bounds.origin.y + topView.bounds.size.height;

self.frame = CGRectMake(0, startPosition, topView.bounds.size.width, [self calculateSheetHeight]);

[topView addSubview:self];

self.blackOutView = [self buildBlackOutViewWithFrame:topView.bounds];
[topView insertSubview:self.blackOutView belowSubview:self];

关于ios - UIActionSheet showInView 方法如何插入其 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15278047/

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