我正在设计一个警报视图,在该视图中,当用户点击特定按钮时,我会显示自定义视图。我正在使用滚动视图查看冗长的内容视图。我已经编写了与下面相同的代码。
我希望此警报视图显示在显示屏幕的中间,而不管滚动位置或内容视图位置如默认弹出窗口中的提示弹出。有没有办法做到这一点。我尝试了一种方法,但没有成功。
我找到的唯一解决方案是在显示之前滚动到顶部并添加子视图。由于这不完美,所以请提出一些措施或建议。感谢。
@IBAction func forgotpassword(sender: AnyObject)
{
blurEffect = UIBlurEffect(style: .Dark)
blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = self.contentview.bounds
blurEffectView.autoresizingMask = [.FlexibleWidth,.FlexibleHeight]
self.AlertVieww.frame.size = CGSizeMake(blurEffectView.frame.width-40, self.AlertVieww.frame.height)//AlertVieww is the IBOutlet of my custom view in scene dock
AlertVieww.center = CGPointMake(UIScreen.mainScreen().bounds.size.width/2, UIScreen.mainScreen().bounds.size.height/2);
AlertVieww.autoresizingMask = [.FlexibleHeight,.FlexibleWidth]
blurEffectView.addSubview(self.AlertVieww)
[self.scrollview.setContentOffset(CGPointZero, animated: false)]//I scroll to the top
UIView.transitionWithView(self.view, duration: 1.0, options: UIViewAnimationOptions.TransitionFlipFromBottom, animations:
{
self.contentview.addSubview(self.blurEffectView)
}, completion: { finished in
self.scrollview.scrollEnabled = false
})
}
//These are two cnacel buttons in which I remove the views
@IBAction func sendAlert(sender: AnyObject)
{
self.blurEffectView.hidden = true
self.scrollview.scrollEnabled = true
}
@IBAction func cancelAlert(sender: AnyObject)
{
self.blurEffectView.hidden = true
self.scrollview.scrollEnabled = true
}
答案 0 :(得分:1)
尝试一下 在最顶层的控制器视图中添加警报视图而不是blurEffectView并设置alertview的中心等于最顶层控制器的视图中心
喜欢,
AlertVieww.center = UIApplication.sharedApplication().keyWindow?.rootViewController?.view.center
UIApplication.sharedApplication().keyWindow?.rootViewController?.view.addSubview(self.AlertVieww)
答案 1 :(得分:0)
UIView * subview =你的观点以SuperView为中心;
UIView *superView = subview.superview;
subview.center = [superView convertPoint:superView.center
fromView:superView.superview];
如果view为nil(在fromView :)上,则此方法将从window base coordinates转换。否则,视图和接收者都必须属于同一个UIWindow对象。
注意:如果您使用自动布局内容,则必须更改约束。不是框架或中心
答案 2 :(得分:0)
这是一个解决方案
而不是self.view.frame.size.width
使用:: [UIScreen mainScreen] .bounds.size.width或height
所以代码是
UIView * View = [[UIView alloc] init]; View.frame = CGRectMake([UIScreen mainScreen] .bounds.size.width / 2,[UIScreen mainScreen] .bounds.size.height / 2,18,36); [self.view addSubview:View];
答案 3 :(得分:0)
在这里尝试这个也是为了制作cGpoint并根据你的主要观点:
view.center = CGPointMake(self.view.frame.size.width / 2,
self.view.frame.size.height / 2);
答案 4 :(得分:0)
尝试这一个......! self.view.center = CGPointMake(CGRectGetMidX(self.parentView.bounds), CGRectGetMidY(self.parentView.bounds));
答案 5 :(得分:0)
删除此代码
AlertVieww.center = CGPointMake(UIScreen.mainScreen().bounds.size.width/2, UIScreen.mainScreen().bounds.size.height/2);
添加此代码
AlertVieww.center = self.blurEffectView.center
后
self.contentview.addSubview(self.blurEffectView)
答案 6 :(得分:0)
一种方法是创建自己的AlertController(继承自UIViewController
)并在其xib
中,将警报的所有视图与适当的约束放在一起,以便在iPhone
上正确显示/ iPad
,无论何时需要展示,只需将其显示在window
上,如下所示。
[window.rootViewController presentViewController:yourAlertControllerInstance animated:YES completion:nil];
OR
您可以使用此custom alert 。它具有多种风格以及后台BlurView
,您可以根据需要自定义它。