UIView作为弹出窗口自动布局问题

时间:2016-09-13 05:15:09

标签: ios objective-c uiview

我创建了一个简单的弹出窗口,但问题是当我试图设置弹出窗口然后它无法正常工作

注意:我正在使用Autolayout

这是我的代码

mpop = [[MPopUp alloc] init];
mpop.frame = CGRectMake(((self.view.frame.size.width) -
                         mpop.frame.size.width) / 2,
                        ((self.view.frame.size.height) -
                         mpop.frame.size.height) / 2,
                        mpop.frame.size.width,
                        mpop.frame.size.height);

UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0,
                                                           0,
                                                           self.view.frame.size.width,
                                                           self.view.frame.size.height)];

mpop.overlay = newView;

UIVisualEffect *blurEffect;
blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];

UIVisualEffectView *visualEffectView;
visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
visualEffectView.backgroundColor = [UIColor blackColor];
visualEffectView.alpha = 0.4;
visualEffectView.frame = newView.bounds;
[newView addSubview:visualEffectView];

newView.translatesAutoresizingMaskIntoConstraints = NO;


[self.view addSubview:newView];
[mpop showInView:self.view animated:YES]; 

它在人像模式下工作正常,但不在风景中工作可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您需要为此情况添加自动布局限制。我已经为您的示例添加了代码并在GitHub上提供了参考资料。在下面的链接中找到它。我必须在视图controller.m文件和view.m文件中的2个文件中添加代码。

https://github.com/mahesh-agrawal/Autolayout-Popup

通过运行来检查。如果要使宽度或高度动态化,可以使用下面的计算替换硬编码值。

[[UIScreen mainScreen] bounds].size.width * (290.0/320.0)代替290.0