CGRectMake没有在swift中工作?

时间:2016-06-30 04:56:41

标签: swift uidatepicker

我是Swift的新手。点击FDatebutton

时没有得到子视图
@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)

}

3 个答案:

答案 0 :(得分:0)

<强>可能性

  • 如果您已启用Autolayout(默认情况下实际已启用),则在将UIView设置为translateAutoresizingMaskToConstraints之后,将框架设置为任何false将无效LI>
  • 禁用Autolayout,然后设置frame属性。 (这不是最好的方法,因为现在使用Autolayout是最好的做法。)

最佳实践

  • 创建NSLayoutConstraint的出口并将其连接到您希望在运行时更改的Interface Builder约束。
  • 请按照本教程了解如何使用AutoLayout

您需要做什么

  • translateAutoresizingMaskToConstraints
  • 设置falseDatePickerView

希望能够发挥作用

答案 1 :(得分:0)

您可以打印datePickerView.frame并使用Xcode中的Visual View Debugger来查看您的视图是否以及在哪里。

我不认为从主窗口中获取视图大小是个好主意。如果用户在iPad上使用分屏模式怎么办?它还能以您想要的方式工作吗?使用自动布局是更好的选择。

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

答案 2 :(得分:0)

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