如何在UIModalPresentationPageSheet中显示的模态视角添加关闭按钮?

时间:2013-04-13 02:58:48

标签: ios objective-c uiview modal-dialog

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

enter image description here

但是将它添加到父视图会使它显示在页面页面后面(也无法点击),并将其添加到页面表中会使其中的一部分隐藏,因为它不在视图区域内。

有没有更好的解决方案?

任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:2)

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

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

这应该为您提供正确的视图,让按钮显示在模态的顶部并接收触摸事件。

- 编辑 -

要定位按钮,您可以尝试这样的事情:

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的框架。然后,您可以将按钮的原点设置为偏移并设置调整后的帧。

答案 1 :(得分:0)

看看是否有效:

myPresentedView.clipsToBounds = NO;

这将允许按钮在其视图之外绘制自己。这样做的一个缺点是触摸不会超出视图边界,所以尽量不要将按钮设置得太远。