2016-04-23 50 views
0

我添加了一个日期选择器作为子视图,我期望的是,当我按下“更改日期”按钮时,日期选择器将显示在视图的底部。但现实是simulation result子视图的位置不是我所期望的

@IBAction func onUpdateBirthday(sender: UIButton) { 
    showChooseBirthday() 
} 

func showChooseBirthday() { 

    view.addSubview(chooseBirthday) 

    let bottomConstraint = chooseBirthday.bottomAnchor.constraintEqualToAnchor(view.bottomAnchor) 
    let leftConstraint = chooseBirthday.leftAnchor.constraintEqualToAnchor(view.leftAnchor) 
    let rightConstraint = chooseBirthday.rightAnchor.constraintEqualToAnchor(view.rightAnchor) 
    let heightContraint = chooseBirthday.heightAnchor.constraintEqualToConstant(60) 
    NSLayoutConstraint.activateConstraints([bottomConstraint,leftConstraint,rightConstraint,heightContraint]) 
    view.layoutIfNeeded() // re-layout the view 

    self.chooseBirthday.alpha = 0 
    UIView.animateWithDuration(0.4) { 
     self.chooseBirthday.alpha = 1 
    } 

这里是a part of storyboard

+0

你为什么不打开pickerview作为inputview –

+0

我真的很抱歉,在迅速IAM新的,你有什么样? –

+0

请查看http://blog.apoorvmote.com/uipickerview-as-inputview-to-uitextfield-in-swift/ –

回答

1

正如其他人所说,您可以将日期选择器添加到UITextField。这里是一个例子,我希望它能帮助你。 Result here

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var birthdayTextField: UITextField! 
    var birthdayPicker = UIDatePicker() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
      configureBirthdayPicker() 
     } 

    func configureBirthdayPicker(){ 

     birthdayPicker.datePickerMode = .Date 
     birthdayPicker.maximumDate = NSDate() 
     birthdayPicker.tintColor = UIColor.blackColor() 
     birthdayPicker.backgroundColor = UIColor.groupTableViewBackgroundColor() 

     let toolBar = UIToolbar() 
     toolBar.barTintColor = UIColor.groupTableViewBackgroundColor() 
     toolBar.barStyle = UIBarStyle.Default 
     toolBar.translucent = true 
     toolBar.tintColor = UIColor.blueColor() 
     toolBar.sizeToFit() 

     let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "donePicker:") 
     let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil) 
     let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "cancelPicker:") 

     toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false) 
     toolBar.userInteractionEnabled = true 

     birthdayTextField.inputView = birthdayPicker 
     birthdayTextField.inputAccessoryView = toolBar 

    } 

    func donePicker(doneclicked:UIButton){ 
     print("done clicked") 
     birthdayTextField.resignFirstResponder() 
    } 

    func cancelPicker(cancelclicked:UIButton){ 
     print("cancel clicked") 
     birthdayTextField.resignFirstResponder() 
    } 
} 
0

尝试改变translatesAutoresizingMaskIntoConstraints到无代码

1

您应该使用,而不是按钮文本框。并将pickerview设置为inputview的文本字段,因此当您选择文本字段时,它将打开yourdatepicker而不是keyboard

有很多教程可用,只是谷歌它,如果你没有太多的想法。

并且在您的代码中,您应该设置translatesAutoresizingMaskIntoConstraintsNO

希望这会有所帮助。

相关问题