UIModalPresentationPageSheet
我想在视图的一角添加一个浮动关闭 (x) 按钮。效果如下图:
但是将它添加到父视图会使其出现在页面表后面(并且也无法点击)并将其添加到页面表会使其部分隐藏,因为它不在视图区域之外。
有没有更好的解决方案?
任何建议表示赞赏。
UIModalPresentationPageSheet
我想在视图的一角添加一个浮动关闭 (x) 按钮。效果如下图:
但是将它添加到父视图会使其出现在页面表后面(并且也无法点击)并将其添加到页面表会使其部分隐藏,因为它不在视图区域之外。
有没有更好的解决方案?
任何建议表示赞赏。
您可以尝试将其添加到最顶层的应用程序窗口:
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 的框架。然后,您可以将按钮的原点设置为偏移并设置调整后的框架。
看看这是否有效:
myPresentedView.clipsToBounds = 否;
这将允许按钮在其视图之外绘制自身。这样做的一个缺点是触摸不会超出视图边界,因此请尽量不要将按钮设置得太远。