CGRectMake不在swift中工作?

CGRectMake不在swift中工作?,swift,uidatepicker,Swift,Uidatepicker,我是斯威夫特的新手。单击fdate按钮时未获取子视图 @IBAction func FDateButton(sender: AnyObject) { tag = 20 self.view.endEditing(true) DatePicker.hidden = false DatePickerView.hidden = false DatePickerView.frame = CGRectMake(0, UIScreen.mainScreen().boun

我是斯威夫特的新手。单击fdate按钮时未获取子视图

@IBAction func FDateButton(sender: AnyObject) {
    tag = 20
    self.view.endEditing(true)
    DatePicker.hidden = false
    DatePickerView.hidden = false
    DatePickerView.frame = CGRectMake(0, UIScreen.mainScreen().bounds.size.height/4, UIScreen.mainScreen().bounds.size.width, UIScreen.mainScreen().bounds.size.height/2)
    DatePickerView.backgroundColor = UIColor(colorLiteralRed: 0.65, green: 0.36, blue: 0.64, alpha: 1.0)
    self.view.addSubview(DatePickerView)

}

可能性

  • 如果启用了
    Autolayout
    (默认情况下实际上已启用),则在将
    translateAuthorizingMasktoConstraints
    设置为
    false之前,将frame设置为任意
    UIView
    将不起作用
  • 禁用
    自动布局
    ,然后设置框架属性。(这不是最好的方法,因为现在使用
    Autolayout
    是最好的做法。)
最佳实践

  • 创建
    NSLayoutConstraint
    的出口,并将其连接到要在运行时更改的界面生成器约束
  • 遵循本教程了解如何使用
你需要做什么

  • DatePickerView

希望这能起作用

您可以打印
datePickerView.frame
,并使用Xcode中的可视化视图调试器查看视图图形是否在哪里

我认为从主窗口导出视图大小不是一个好主意。如果用户在iPad上使用拆分模式怎么办?它还会按照你想要的方式工作吗?使用自动布局将是一个更好的选择


此外,每次单击
FDateButton
时都会添加新的子视图

使用CGRect(x:0,y:UIScreen.mainScreen().bounds.size.height/4,width:UIScreen.mainScreen().bounds.size.width,height:UIScreen.mainScreen().bounds.size.height/2)方法代替CGRectMake。更正您的代码,它将正常工作

您在哪里声明了DatePickerView?在我的视图控制器之外,您可以用声明和初始化代码编辑问题吗?您创建了自定义视图或它是视图的IBOutlet?在Swift中,使用
CGRect(x:,y:,width:,height:)
而不是
CGRectMake
。一切正常,您能告诉我如何创建一个子视图,如果启用了自动布局(默认情况下已启用),该子视图应该位于主视图的中心吗,将框架设置为任何UIView将不起作用。“。。。那不是真的。默认情况下,如果您没有为以编程方式创建的视图关闭
translateAutoresizingMaskToConstraints
,当您设置
框架时,它将为您创建约束。感谢@Rob让我知道这一点。