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

Posted

技术标签:

【中文标题】如何将关闭按钮添加到 UIModalPresentationPageSheet 中显示的模态视图角?【英文标题】:how to add close button to modal view corner which is presented in UIModalPresentationPageSheet? 【发布时间】:2013-04-13 02:58:47 【问题描述】:

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

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

有没有更好的解决方案?

欢迎提出任何建议。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

好建议,如何定位按钮的位置? @chancy 我已经更新了我的答案,希望能为您的评论提供解决方案。【参考方案2】:

看看这是否有效:

myPresentedView.clipsToBounds = NO;

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

【讨论】:

这行不通。我以前试过。该按钮仍将被剪裁。 clipsToBounds 对页面表内显示的视图没有影响,因为它不能超出页面表的边界

以上是关于如何将关闭按钮添加到 UIModalPresentationPageSheet 中显示的模态视图角?的主要内容,如果未能解决你的问题,请参考以下文章

如何添加完成按钮以关闭数字键盘

如何将可关闭的文本标签添加到 Textarea Kendo | jQuery

将关闭按钮添加到 UIModalPresentationPageSheet 角落

将(打开/关闭)按钮添加到(打开/关闭)导航抽屉的活动

以编程方式将按钮添加到表格视图单元格[关闭]

将关闭按钮添加到部分不在视图中的模态视图