我正在设计一个自定义警报,为此我使用了在场景底座中设计的视图,其中包括故事板文件https://www.dropbox.com/s/dhk5rrme1j2g89g/Main.storyboard?dl=0的约束和下拉框链接-

ios -  subview 在应用程序启动时在设备的不同初始方向上采用不同的帧大小-LMLPHP
ios -  subview 在应用程序启动时在设备的不同初始方向上采用不同的帧大小-LMLPHP

现在,我通过以下代码添加视图:

 @IBAction func forgotpassword(sender: AnyObject)
    {




                                blurEffect = UIBlurEffect(style: .Dark)
                blurEffectView = UIVisualEffectView(effect: blurEffect)
                blurEffectView.frame = self.contentview.bounds
                blurEffectView.autoresizingMask = [.FlexibleWidth,.FlexibleHeight]


                 AlertVieww.frame = CGRectMake(20, (self.navigationController?.navigationBar.frame.origin.y)! + (navigationController?.navigationBar.frame.height)! + 20, blurEffectView.frame.width-40, self.AlertVieww.frame.height)



                AlertVieww.autoresizingMask = [.FlexibleHeight,.FlexibleWidth]





            blurEffectView.addSubview(self.AlertVieww)



          [self.scrollview.setContentOffset(CGPointZero, animated: false)]
          self.navigationController?.navigationBarHidden = true

        UIView.transitionWithView(self.view.window!, duration: 1.0, options: UIViewAnimationOptions.TransitionFlipFromBottom, animations:
            {


                self.contentview.addSubview(self.blurEffectView)



            }, completion: { finished in


                self.scrollview.scrollEnabled = false



        })

    }

我将发布以下场景以及simmulator的屏幕截图-

1.当simmulator处于potrait模式时,我要触摸警报按钮-

Potrait中的模拟器-

ios -  subview 在应用程序启动时在设备的不同初始方向上采用不同的帧大小-LMLPHP

然后我将其旋转到风景-

ios -  subview 在应用程序启动时在设备的不同初始方向上采用不同的帧大小-LMLPHP

2.当simmulator处于横向模式时,我要触摸警报按钮

横向仿真器-

ios -  subview 在应用程序启动时在设备的不同初始方向上采用不同的帧大小-LMLPHP

然后我将其旋转为potrait ****(问题出在这里)**-**
此外,我的用户与“发送”和“取消”按钮的交互都被禁用。

ios -  subview 在应用程序启动时在设备的不同初始方向上采用不同的帧大小-LMLPHP

如何解决以上问题?如何将Alertview固定在屏幕上的正确位置。 编辑我也尝试了对我的问题https://stackoverflow.com/a/34610391/5395919的投票最多的答案,但是它不能解决我的问题。

最佳答案

setTranslatesAutoresizingMaskIntoConstraints设置为true
来自docs:

默认情况下,您对任何视图的属性都设置为true
以编程方式创建。如果您在Interface Builder中添加视图,
系统会自动将此属性设置为false。

blurEffectView.autoresizingMask = [.FlexibleWidth,.FlexibleHeight]
blurEffectView.setTranslatesAutoresizingMaskIntoConstraints(true)

AlertVieww.autoresizingMask = [.FlexibleHeight,.FlexibleWidth]
AlertVieww.setTranslatesAutoresizingMaskIntoConstraints(true)

10-08 07:32