我想在 UIModalPresentationPageSheet View 的角落添加一个 float 关闭 (x) 按钮。效果如下图:

但是将它添加到父 View 会使其显示在页面表后面(并且也无法点击)并将其添加到页面表将使其部分隐藏,因为它在 View 区域之外。

有没有更好的解决办法?

任何建议表示赞赏。

最佳答案

您可以尝试将其添加到最顶部的应用程序窗口:

    add.modalPresentationStyle = UIModalPresentationPageSheet;
    [self presentViewController:add animated:YES completion:^{
        [[[[UIApplication sharedApplication] windows] lastObject] addSubview:button];
    }];

这应该为您提供正确的 View ,以允许按钮出现在模态顶部并接收触摸事件。

- 编辑 -

要定位按钮,您可以尝试以下操作:
self.modalPresentationStyle = UIModalPresentationFormSheet;
add.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:pvc animated:YES completion:^{
    CGRect parentView = pvc.view.superview.frame;
    CGRect buttonFrame = button.frame;
    buttonFrame.origin = CGPointMake(parentView.origin.x - buttonFrame.size.width/2.0f, parentView.origin.y - buttonFrame.size.height/2.0f);

    [button setFrame:buttonFrame];
    [[[[UIApplication sharedApplication] windows] lastObject] addSubview:button];
}];

这将获得已呈现的 modalView 的框架。然后,您可以将按钮的原点设置为偏移并设置调整后的框架。

10-07 19:40
查看更多